O Ruby on Rails está aparecendo na mídia, grandes aplicações estão sendo criadas de forma simples e rápida, mas você que já é programador em outra linguagem deveria usar Rails?
Neste post eu vou tentar te convencer porque voce não deve utilizar Ruby on Rails, vamos lá em um mesmo pensamento, apenas o primeiro motivo, serão varios.
Porque voce não deve usar Ruby on Rails?
1) Por que você adora escrever strings SQL
Sim, tem muito desenvolvedor que adora escrever algo parecido com isto.
sql = “INSERT INTO clientes
(nome,
data_nascimento,
logradouro,
bairro,
cidade,
uf,
cpf,
rg)
VALUES
(’$nome’,
‘$data_nascimento’,
‘$logradouro‘,
‘$bairro‘,
‘$cidade‘,
‘$uf‘,
‘$cpf‘,
‘$rg‘) ”
Isto parece simples para você ? Pois não me parece nada simples.
Vamos imaginar que voce necessite incluir mais 10 campos na tabela do banco de dados, ok ?
Então o que voce deve fazer ? Tem gente que esta lendo isto e pensando, simples, muito simples, só preciso alterar a string que tem o meu comando SQL e pronto, para o insert funcionar corretamente.
Correto, mais isto não é agil, isto não é rápido, quem te garante que você não vai esquecer de uma aspas, quem te garante que voce não vai esquecer de uma virgula ?
Agora vamos pensar: Incluimos 10 campos na tabela, 99,99 % de chances que você deverá atualizar os dados do bando de dados, beleza heim? vai precisar também modificar a string com o camando SQL para fazer o update, string que eu me recuso colocar um exemplo aqui.
Ótimo, você não está convencido, então que tal ver como isto ficaria em ruby on rails.
Código em ruby on rails
@cliente = Cliente.new(params[:cliente])
@cliente.save
Parece estranho, mas é somente isto, claro que estou abstraindo bastante, mas estas duas linhas fariam muito mais que todo aquele código que coloquei a cima, na verdade aquele código só vai criar um string com o comando sql e o código em ruby on rails literalmente salvar os dados no banco.
Voce vai sentir muita falta de utilizar comandos SQL ? Pois gostaria de adiantar, em Ruby on Rails comandos SQL não serão mais necessários.
Um conselho, deixe que alguém faça os comando SQL por voce, é muito mais fácil, mais rápido, e mais agil, Ruby on Rails poderá fazer isto por voce, e claro poderá fazer muito mais.
Para finalizar um pouco de comparação do Ruby on Rails vs PHP
Para saber mais de Ruby on Rails visite o Rails Guide
Por favor tente cair na real também, isso vai te ajudar muito, para saber mais clique aqui

Tem razão. A grande facilidade do rails é que abstrai muito!!!
Só para adicionar mais um exemplo: o uso de plugins e de gems, não sei como funciona em outras linguagens, mas tem muito plugin e gem proto para ser usado e que acelera muito o desenvolvimento.
Cara, quando li o título desse post…confesso que assustei…Rsrsrsrs
Parabéns assim vc está confiando que o ruby on rails obtenha os dados necessários pelo “SQL” do cliente.. o cliente passa os “campos’ e tbm o conteudo.. parabéns mesmo.. jah ouviu falar em SQL Injection por acaso.. kkkkkkkkkkkkkkkkk
Nunca usei Ruby on Rails, não tenho nada contra (pelo contrário, até pretendo aprender um dia), mas esse exemplo que você deu não seria o mesmo que usar, por exemplo, o Hibernate em Java? Não conheço a fundo outras linguagens, mas acredito que quase todas tenha algo desse tipo… ou não? Tenho a impressão que escrever esse código do jeito que você citou, é coisa de quem está desenvolvendo com tecnologia/ferramenta/etc. muito ultrapassada.
Uma pergunta: isto é nativo no Ruby on Rails?
Abraço!
Pois é, isso pode ser feito em qualquer linguagem… a maioria (PHP, JSF, Coldfulsion) tem algum framework ou biblioteca que faz a mesma coisa ai… incluindo, gerar o SQL e os formulários bastando você mudar a CSS, ou seja, Rails é bom, como as outras também o são, então fico com a que Eu sei e entendo mais…
Pessoal
Ótima discussão, quando comecei a utilizar Ruby on Rails me chamou muito a atenção o desenvolvimento por conversação, ou seja, tem padrão, (se você quiser mudar, você muda). Com relação a comparação com outros frameworks, blz ! tem muitos mesmo, o CAKE PHP já usei é bem legal, já o Hibernate em JAVA (apesar q vale muito pela estabilidade), eu acho que não compensa pelo tanto de coisas que tem que configurar e instalar.
Na minha opinião em RAILS esta tudo na mão, esta é uma grande vantagem …
Valeu pelo comentários …
Felipe, todo mundo já ouviu falar em sql injection, e no RoR, assim como no php por exemplo, existe tratamento por expressão regular, só ñ foi mostrado no exemplo.
Falando nisso, o próximo tópico deveria tratar de validações, aí eu queria ver o Felipe comentar…rs
Anunakin, realmente existem outras linguagem que fazem algo parecido, mas nenhuma com a mesma agilidade. Essa é a grande sacada do RoR.
Abraço a todos…
Jot@!!!
Deu uma boa idéia !!!!
Vo falar de validação no proximo post …
Entendo a boa vontade por trás do texto … mas a comparação foi muito infeliz … qquer framework vagabundo faz isso …
[]s
Putz, e eu perdi tempo lendo isto
Como disseram qualquer framework vagabundo faz isto
em Java tem o Hibernate que é ótimo, em php tem dezenas de framework para manipulação de Banco, eu prefiro utilizar um pacote de classes que eu mesmo desenvolvi em PHP5, então não me venha dizer que ruby deve ser utilizado por causa de uma tecnica muito antiga
massa, então quer dizer que posso integrar aquelas bases antigas e obscuras do DB2 do meu cliente com um código de 2 linhas e ainda por cima a aplicação vai agüentar uma produção de mais de 1 milhão de propostas por mês sob condições, por exemplo, de nenhuma consulta demorar mais do que 300 milissegundos??
estou migrando agora mesmo,
Cara, com rails jah naum duvido muita coisa naum, abs!!!
Outra coisa, alguem conhece o twitter?!?!
http://tweetrush.com/
Acho que eles tem uma boa margem… hoje jah foram mais 1,100,000 de tweets e nem passamos do meio dia… hehehe
[]‘s Targa
é como dizem a beleza está nos olhos de quem vê. e sinceramente se você fala mal de alguma coisa provavelmente você não conhece.
Isso tá parecendo papo de quem só conhece uma linguagem, e ao invés de se dar ao trabalho de aprender, está tentando fazer o mundo achar que só a sua linguagem é boa.
Resumindo: papo furado! Coisa semelhante a essa pode ser utilizada na maioria das outras linguagens.
Tomara que o senhor pesquise mais sobre outras linguagens antes de escrever os próximos artigos.
PS: Não, eu não tenho nada contra Ruby, muito pelo contrário. O que eu sou contra é essa tentativa sem sentido de provar que uma linguagem é melhor que a outra mostrando informações falhas sobre as demais linguagens.
Ser irônico é bom …
Fala que uma linguagem é boa ou que outra é ruim, isso fere as pessoas.
Olhem bem, não falei de linguagem alguma, apenas comparei um código
Talvez o “$” na string, me entregou … mas tudo bem.
A questão é que com Rails, você vai ter: convenções e muitos métodos auxiliares, principalmente de validação
ActiveRecord bom d+ – veja http://voloko.ru/sdoc/rails/rdoc/
O que você fez foi comparar um framework ( RoR ) com o PHP puro, o que é muito fácil.
Pegue um framework PHP, como o CodeIgniter, e você também fará o insert em uma linha.
Bacana o post cara… esses caras ae sao os prog java delphi e .net com inveja! (gente de pouca visao sem senso de humor) hahahah… mas liga nao, deixa eles se lascarem, eles podem tentar na proxima vida…
Vi alguns carinhas falando de Hibernate, outros de dúzias de frameWorks php.
Pessoas o carinha esta mostrando como se faz em Rails usa quem quiser ….
E para fazer esse exemplo simples em Hibernate tem que criar uns 4 xmls, editar 250 linhas e perder umas duas horas
com o ROR o carinha fez em 10 minutos.
Quanto ao php realmente é facil achar um frameWork bacana, quem quiser monte um exemplo e post o link.
Abraços
Valeu pelos comentários
nofxx e .Valdinei dos Santos
Gostei muito deste nossa discusão, tem gente do lado do php, do java, cada um com o seu cada qual, esta é a verdade !!!!!
ROR, é hoje a mais ágil de todas as plataformas que já conheci.
O exemplo do Valdinei dos Santos foi ótimo, hibernate é praticamente padrão para grandes aplicações JAVA, mas a quantidade de arquivos XML para se configurar …
Como o próprio criador do Ruby on Rails falou:
“Ruby nunca vai substituir o Java, Ruby é um novo conceito de desenvolvimento simples, o Java nunca foi assim”
O cara que escreve um artigo deste deve estar brincando né?
Como o RoR vai obter os dados do cliente ?
O RoR é um framework, e você já ouvir falar de ZendFramework?
com o ZendFW você não constrói querys, até porque nem precisa usar um framework para fazer isso que você fez, você está sendo totalmente injenuo e leigo dizendo isso.
Para para estudar um pouco sobre o PHP como você deu o exemplo ai, ai depois sim, você faz uma comparação que tenha sentido.
Ah, só pra esquentar a discussão: Eu nem sou programador, mas, como qualquer computeiro com um minimo de noção eu sei que qualquer linguagem alto nível deixa a desejar em performance.
Para o básico ao que o ROR se propõe eu não tenho dúvidas de que ele é ótimo (inclusive performance), mas ele nunca será tão flexivel quanto um java ou c.
E, com isso, obviamente os programadores de ROR jamais ganharão metade do dinheiro que programadores profissionais java ou c conseguem ganhar!
Nuuuoosss…. “Flexibilidade”???????????
“ele nunca será tão flexivel quanto um java ou c”?????????
Bom senso, tenha bom senso e vai aprender RoR. É a maneira mais flexível de se criar uma aplicação web!
Conheço C/C++, conheço Java, e já trabalhei profissionalmente com PHP, Delphi e hj cm C# (aprendendo…rs).
O Rails, nada mais é do que um esqueleto pronto, baseado em aplicações de sucesso. C vc precisa d uma funcionalidade baixo nível, por exemplo, vc vai utilizar os recursos da linguagem Ruby.
Talvez eu ñ tenha entendido, mas “flexibilidade”, ou seja, o fato d vc fazer alterações (estruturais até) depois da fase de análise, durante a programação, com um mínimo esforço, e com bem pouco impacto, isso o RoR dá d 10 em outras linguagens (e frameworks).
Agora, a “melhor linguagem”, é a q vc gosta de usar, ñ as q alguém diz q é a melhor.
Comparativos em busca da melhor linguagem ñ significam nada. O fato de vc gostar ou ñ d uma linguagem significam tudo.
O post só quis mostrar a maneira de como as coisas funcionam em RoR, a para isso houve a comparação. O título do post ñ era “RoR é o melhor…”
Outra sugestão de continuação: mostrar a flexibilidade de mudança e adaptação do RoR comparado a outros frameworks…
Flw pessoal…
Aqui vai a definição da palavra flexibilidade do meu comentário anterior:
Flexibilidade: Possiblidade de se fazer QUALQUER coisa com a linguagem, e não apenas programação web.
Note que eu disse também que o ROR é muito bom no que se propõe a fazer, e nada mais.
Uma pergunta: Quão boa é a escalabilidade de aplicações RoR? (Não vou precisar definir escalabilidade também, né? hehe)
Vamos lá… a linguagem ñ é RoR, é Ruby, e com ela vc pode fazer o q quiser.
Agora quem está querendo comparar linguagem com framework é vc…
Terceira sugestão: escalabilidade…
Eu já programei um pouco com RoR e pelo que puder perceber é que ele é bom naquilo que foi preparado para fazer. Por exemplo, é muito fácil fazer um adicionar, editar, remover e listar ( ou seja, CRUD ).
Mas o grande problema é se você quiser fazer algo diferente. Se quiser sair um pouquinho daquilo que o framework foi feito. Ai é um deus nos acuda, tudo muito complicado e com falta de recursos que são básicos para qualquer aplicação web.
É por isso que o Twitter já ameaçou várias vezes mudar para outras linguagens e abandonar o RoR. Existe até uma entrevista onde um dos desenvolvedores explica isso com mais detalhes e em que sentido o RoR estava segurando o crescimento deles.
Não importa a linguagem… o importante é ser poeta!
“Abstrai” o comentario acima..
><
Bom senso,
ROR é para web então ele não é flexivel (de acordo com sua definição, que isso fique bem claro)
, Ruby faz o que vc diz de flexibilidade… procure saber um pouco a respeito.
Não acho que a conversa esteja adicionando valor porque estão discutindo até português.
Sabe qual linguagem realmemte é boa XPTO ( leia-se aquela que coloca dinheiro no seu bolso e te dar prazer ao programar).
Não sou defensor do ROR mas o acho muito bacana, hoje em dia o que esta colocando dinheiro no meu bolso é PHP, e Django/PYTHON.
Todas as linguagens tem seu espaço…. umas mais faceis outras mais dificeis… é a vida cada um faz sua escolha.
E outros ficam falando besteira sem saber…
é , realmente, descobri o porque de nao usar essa porcaria, simplesmente porque voce nao sabe o que sua aplicação está fazendo. ai ela altera tudo sua base de dados e quando voce vai fazer uma consulta na mao, nada esta onde deveria.
Chatran, tem certeza q vc tá falando do RoR?
C realmente fosse assim vc acha q alguém usaria isso???
###############
chatran …
##############
Sério, vamos te ajudar a entender bem o que o ROR .. nos proximos posts voce vai entender bem …
Pode crer.
mas este negocio de mudar tudo na base, cara …
Pedro, acho que vc já foi xingado bastante aí, né cara… Mas também acho que mereceu.
Na próxima vez compara o Rails com um código em Ruby.
Pra falar a verdade, as vezes tenho dúvidas de que o pessoal que usa Rails sabe Programar em Ruby.
Pedro, por que não devo usar RoR?
cara, gostei da iniciativa mas faltou um pouco mais do que simplesmente mostrar builder de sql… RoR é um framework muito bom, posso ate dizer que é excelente mas não da pra deixar de lado o fato que, “ainda esta sendo desbravado”.!
Falar de RoR resumidamente vai mas alem do que falar de construir uma sql ágil. Bom, alguém disse:
“Nunca usei Ruby on Rails, não tenho nada contra (pelo contrário, até pretendo aprender um dia), mas esse exemplo que você deu não seria o mesmo que usar, por exemplo, o Hibernate em Java?” author: Marcus
e alguém respondeu:
“… o Hibernate em JAVA (apesar q vale muito pela estabilidade), eu acho que não compensa pelo tanto de coisas que tem que configurar e instalar.” author: Admin
isso basta para o povo que não entendeu seu contexto pensar
“Putz, e eu perdi tempo lendo isto
Como disseram qualquer framework vagabundo faz isto” author: Reideer
Resumindo,
“Isso tá parecendo papo de quem só conhece uma linguagem, e ao invés de se dar ao trabalho de aprender, está tentando fazer o mundo achar que só a sua linguagem é boa.” author: Bom senso
É pra falar de RoR! exponha a facilidade que temos em usar MVC ao trabalhar com rails, diga que ele é um framework em ruby assim como JSF é em Java e passe uma coisa em RoR que agilizada outro em qualquer framework similar. Muito dos ofendidos parecem conhecer bem o java, nada contra, também trabalhei durante muito tempo com a Sun no bolso (cursos e mais cursos) e seu arsenal pesado de classes, utilitários e frameworks (quase infinitos).
RoR é formado por um conjunto de gems (o que é uma gem?) e dentre elas existe uma chamada active-record que seria como o hibernate do java só que pra ruby e mas, nada me impede de usar o active-record em uma aplicação desktop. “Não estou preso ao mundinho web” (que coisa xiita)!
Bom, alem disse, em java se for trabalhar com hibernate, só pra facilitar a vida, precisarei usar o hibernate_annotation e pra facilitar as validações usarei o hibernate_validate, e posso também optar por não usar esses dois ae, e no RoR? Bom, nele já tenho isso tudo injetado no active-record e se não quiser usar, não uso. Ah, mas com hibernate posso usar o hsql pra trabalhar com sql no banco seguindo o padrão do hibernate (mas uma coisa pra aprender!) e com o RoR? Nada, se não quiser usar uma abstração em model então use sql direto com active-record, não é comum mas é transparente, você não é preso.! Uhhm, interessante. Bom, com o hibernate posso mapear minhas classes de forma a não conflitarem com os tipos de dados da base, assim posso trabalhar com vários bancos de dados. E no RoR? Bom, no RoR você simplesmente não configura nada, P.N. (nadinha de nada), não existe essa necessidade pos, quando o model recebe a injeção de atributos ele é automaticamente configurado para aquele tipo especifico do banco que vai trabalhar com ele então “você teoricamente não faz nada”. Tem só mais uma coisa que gostaria de por a favor do java, vide hibernate, posso construir meu banco todo através dos meus mapeamentos de classe, e o RoR? Bem, nele você cria uma migração, nela vai constar o que será posto na tabela que ele vai criar e só, acho que essa deva ser toda nossa configuração inicial para que tudo possa existir, como dizem “nem tudo é perfeito” mas ate mesmo o dotnet já ta imitando essa idéia pos e bem mais elegante!!!!
Acho que com java você precise configurar um mapeamento xml que expresse as configurações para que o jdbc acesse o banco, também precisa montar uma classe utilitário para cadastrar seus modelos de base no hibernate e alem de tudo, tem que chamar o hibernate quando precisar fazer alguma operação no banco referente a um pojo, agora, sabe quanto disse EU ,hoje, desde quando deixei de programar em java, dotnet, php ou usar o delphi, faço com o RoR? Simplesmente, nada!
Bom, deixando toda essa conversa chata de lado o que tem no RoR? Acho que só o hibernate + hibernate_annotation + hibernate_validate + hibernate_etc, facelets, struts, spring, jsf, jsp, um tomcat desnutrido, milhares de frameworks (plugins), junit, Ajax4j, log4j, jdbc,javadoc e o “MSDOS” para testar a aplicação, tem bem mais mas não convem especificar tanto assim.
Nada contra o java, eu mesmo gosto muito e uso bastante com jruby mas foi justamente pelo excesso de java que mudei para Ruby. RoR é um mero framework que ultimamente corre pra não ficar atrás do Merb (ou algo assim e que por sinal e que na próxima versão esta fundido ao rails).
Hoje não tenho mais com o que sonhar pos ruby me da de tudo pra programar já o java ainda sonha em suportar closures. Bom, o que esperar da versão 1.9 do ruby que saiu recentemente e o que esperar da versão 7 do java que ainda ta pra vir e o que esperar da versão 4 do dotnet que nem se fala.?????
att,
Concordo com o que a maioria dos colegas falou ai acima, seria muito fácil em outras linguagens fazer essa comparação, seu exemplo so vem a mostrar a grande vantagem de se usar uma framework de persistencia, só que esquece de falar que quase todas as linguagens de alto nível possuem uma
Abraço
Salve,
1º RoR é um FRAMEWORK e não linguagem, então não compare ele com PHP, Java e outros.
2º Tem vários FRAMEWORKs que fazem o mesmo para a maioria se não todas as liguagens.
3º Um título desse é pra chamar atenção e explicar isso? Achei feio esse jeito: título contra o objetivo do texto.
4º Falta de conhecimento mata a alma.
Valeu!
Juro que pelo título eu ia xingar até a sua mãe, mas como sou bom apreciador de Ruby, Rails e ironia, vou na verdade assinar o feed. Parabéns pelo post!
Definições:
Ruby – Linguagem de programação interpretada, assim como php, python, Java (sim, java huh) etc.
Ruby on Rails (RoR) – Framework para desenvolvimento Web, assim como Code Igniter, Synfony, Django, etc. (ainda os acho muito menos maduros que o rails)
Sobre o que ele fez em duas linhas: Aquilo é módulo ActiveRecord do Ruby, que usa o pattern de mesmo nome. (Pesquisem sobre Active Record pattern no google).
Assim sendo, existem algumas outras opções de ORM para ruby, algumas com soluções bem parecidas com o Hibernate, fazendo com que você possa utilizar bancos de dados legados, mas com muito menos configurações claro =P .
Existem vários exemplos de escalabilidade em rails, yellowpages.com, twitter.com… mas o seu forte é a diversão que nos proporciona.
O ruby não tem um desempenho tão grande, mesmo por ser interpretado e rodar em cima de uma máquina virtual, mas com ele é possível fazer praticamente qualquer coisa sim.
Bom, só esclarecimentos para as pessoas que comentam criticando (e além da critica ignorância). E viva o livre arbítrio
@Rafael Schouery, Valeu Rafael … o titulo é pra chamar a atenção mesmo … muita gente já odeia o RAILS sem conhecer … e são esses que eu quiz chamar a atenção … e convidar a conhecer tbm claro !!!
Bixo, para e pensa: “se precisar inserir mais 10 campos na tabela”…
Já partindo errado na situação, a solução fica sem serventia.
@Normalização Non Exists, Fala Garoto, Seguinte, incluir campos, no caso do rails atributos, não tem como, é inevitável. Alguns projetos, nem o cliente consegue definir processos, em fim! a vida real não é nada facil !
Amigos, amigos, amigos.. Ruby on Rails não veio para competir, não veio pra substituir, veio para dar luz na escuridão da “improdutividade”. Ruby on Rails trás soluções para o desenvolvimento web, soluções essas baseadas em convensões, esté é o código da produtividade. Me digam, que framework faz assim tão sutil como o Ruby on Rails? Ruby on Rails não veio tomar o lugar de Java, PHP ou sabe o que – não existe bala de prata, mas veio pra um repensar no desenvolvimento web. E tá funcionando, rsrs… Observem… está aparecendo nas comunidades um monte de soluções, até elegantes, mas… isso são outros méritos. O que epermanecerá de Ruby on Rails são os conceitos e técnicas empregadas. Ah! Só pode questionar quem já o usou, E quem o usou assina embaixo. (Ainda não vi um ser nesse mundo que não tenha se envolvido com Ruby on Rails e não tenha adotado)
@Elderson Jammer, Blz … concordo contigo, o rails é ágil e livre. e isso é o que importa !
@Felipe,
SQL do cliente!? Da forma como esta escrito, o framework do rails busca as informacoes enviadas por POST ou GET, e usa o metodo save para gravar as informacoes no banco de dados, escapando automaticamente caracteres do conteudo que pudessem ser usados em um SQL injection.
Alem disso, por padrao existe o protect_from_forgery que cria um numero unico por formulario e o valida para impedir que sejam enviados formularios forjados.
E outra pratica boa e restringir os campos que o usuario pode escrever no banco de dados, atraves do metodo attr_accessible. Voce tambem pode e deve validar formato e presenca dos atributos com os metodos validate_…
Logo por padrao seu formulario esta protegido contra SQL injection e formulario forjados, e com pouco esforco voce consegue ter um nivel de seguranca e integridade de dados alta. Entao nao fale besteira sobre assuntos que desconhece.
Se existe um modo mais simples e mais rápido de se fazer as coisas ótimo,
então por que ficar criticando.
Trabalho com desenvolvimento em Java e digo que às vezes Java é um pé no saco.Estou aprendendo Rails e quem sabe num futuro proximo talvez mude e trabalhe com esta linguagem.
@Roger, blz … a linguagem pode nos ajudar e muito. Cada vez mais simples, e cada vez mais rápido. Essa é a minha idéia !