RoR(Ruby On Rails) é tão bom assim?
Resolvi dar uma olhada rapida no Ruby On Rails, baixei ontem o RadRails para brincar um pouco, e fiquei assustado com o resultado.
Eu sei que exemplos simples, e isolados não servem para medir a qualidade/performance de uma linguagem, mas eu não sei programar em Ruby, pelo menos ainda …
Eu olhei alguns tutoriais na internet, e criei o mais básico dos básicos cadastros de usuários, com grupos de usuários e tudo certinho.
Mas o que me deixou assustado, é que mesmo não sabendo programar em Ruby, entre ler tutoriais, entender o que eu estava fazendo, e escrever este cadastro com 3 tabelas (Usuarios, Grupos, Tarefas) demorou no máximo 40 minutos.
Agora uma pergunta para qualquer um que programe em RoR a mais de 40 minutos, a produtividade é absurda assim mesmo? e quando foge dos cadastros simples como este como fica? é possivel costumizar URLs (por exemplo, passar os parametros em uma URL, como no forum do GUJ … )?
E eu que achava que os meus 25/30 minutos por cadastro complexo com Java + arquitetura desenvolvida por mim estavam uma maravilha ![]()
Bom, se tiver alguem para responder as minhas duvidas por aqui, acho que vou ter que aprender uma linguagem nova
(faz tempo que não faço isto
)
PS.: e como fica o suporte a XML, Ajax, remoting, … do RoR?
Valeus por qualquer resposta …
Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!



A produtividade dele realmente é muito boa, lógico que nada mais é do que geração de código. Mas as coisas não são tão triviais quando se trata de aplicações um pouco mais complexas, e fica inviável se for uma aplicação grande, por questões de confiabilidade, robustez e performance, mas acredito que esses problemas tendam a diminuir com o tempo.
Meu blog é feito em RoR, até que ficou legalzinho e não deu muito trabalho.
Acho o RoR legal, mas como não posso aplicar onde trabalho nunca fui muito a fundo, fiquei nos hello worlds.
Mas se vc usar um framework orientado a componentes e eventos em Java (como o Click) fica super simples fazer telas de cadastro.
E estes 40 minutos de hello world viram 4 minutos com Click.
conheço diversos frameworks java
inclusive o click …
mas não foi um hello world, que eu fiz, foi um cadastro de usuários/grupos/tarefas, ou seja, tarefas por usuários e por grupos …
e levou 40 minutos, por que como eu falei eu não sei programar em ruby, se soubesse poderia levar menos …
o que achei mais legal no Ruby On Rails, foi uma coisa que nenhum framework java vai poder me dar …
eu só precisei configurar a minha conexão ao banco de dados, e nada mais …
consigo chegar perto disto com spring-annotation spring framework JSF, mas alem do banco de dados, ainda tenho que mexer no web.xml para registrar meu servlet (os listeners ja automatizei tudo)
e mesmo não precisando de XML, qualquer framework java precisaser configurado pelo menos por anotações, ou seja, algum tipo de configuração precisa no java, no RoR não precisa de nada alem de “onde esta meu banco de dados” …
mas claro, minha experiência com RoR se resume a estes 40 minutos, não sei ainda como ficam os casos um pouco mais complexos, mas pelo menos hoje a noite vou ter que dar mais uma olhada nele
Você precisa configurar pouca coisa porque a maioria já vem com uma configuração padrão que funciona para os casos mais simples, mas logo você vai começar a mexer nos arquivos de configuração, entre eles routes.rb (onde você configura as URL’s, equivalente à configuração dos Servlets no web.xml), environment.rb, entre outros… realmente é muito menos configuração, mas é aquele caso, quanto mais flexível a tecnologia, mas configuração ela te dá…
O esquema de ORM dele é legal, você não precisa configurar quase nada, mas só funciona para relacionamentos simples e em que o banco tenha a estrutura que ele espera… se não você começa a ter muitos problemas.
Agora, com certeza pra projetos pequenos e, no máximo, medios, ele é uma “mão na roda”, e acredito que vale a pena aprender, pois em algum tempo ele pode ter evoluído para uma qualidade maior e o mercado gostar.
Oi Urubatan! É produtivo assim mesmo. Imagina só se você estivesse bem familiarizado com a linguagem e a framework!
Eu não sou nenhum expert em Ruby nem em Rails, mas posso responder como alguém que já foi apaixonado por Java e teve esse mesmo espanto que você teve agora. Tudo é beeeeem mais simples! E isso vale tanto para a framework quanto para a linguagem. Com um mínimo de contato é fácil perceber que a linguagem Ruby está num nível de abstração bem mais alto que a linguagem Java.
Como o Jair disse logo acima, tudo o que preocupa “o pessoal do Java” é meramente uma questão de tempo, e além disso, a grande maioria das aplicações que desenvolvemos, não é tão JEE assim que exija tudo que a plataforma da Sun tem pra nos oferecer. São aplicações Web de pequeno a médio porte.
XML, Ajax e a customização de URL é muito fácil! Já o remoting não sei te responder, mas creio que não interessa muito quando falamos de aplicações puramente Web. (Espero estar falando do mesmo remoting que você, aqueles serviços remotos que o Spring nos ajuda a criar.)
Se quiser estudar mais, sugiro que leia o “Repensando a Web aom Rails” - um livro exelente feito por um brasileiro, o Fábio Akita (http://www.balanceonrails.com.br), que também veio do Java.
Tudo isso abriu muito minha cabeça e me ajudou a quebrar preconceitos, principalmente aqueles que o “pessoal do Java” costuma criar.
Urubatan,
Para quem gosta de Python(sou um deles) tem duas soluções muito interessantes,
O Django(http://www.djangoproject.com) e o TurboGears(http://www.turbogears.org), vale a pena dar uma conferida.
Estou estudando com afinco esses dois frameworks e realmente estou encantado com o poder deles.
Um abraço,
Leandro.
Seja bem vindo!!
Isso pelo fato da sacada do David Hansson “convenção ao invés de configuração”. Enquando o pessoal do java(eu tava lá!) estavam pensando qual a melhor forma de configurar os xml,anotações,etc o cara pensou “Nossa que simples, vamos criar uma convenção e se somente se tiver fora da convenção vamos configurar”.
Já que estou observando que tu queres entrar nessa comunidade com uns caras não dogmáticos e desenvolvendo códigos anorexos mas com grandes musculos, em verdade lhe digo, comece pela linguagem Ruby que é a essencia, vc verá que o Yukihiro Matsumoto está criando Ruby para programador de uma forma pseudo-filantropica.
Aprenda Ruby primeiro se não vai virar operador de framework!!
Shairon Toledo
http://www.hashcode.eti.br
Olá Urubatan,
Creio que você deve se lembrar de mim na comunidade do GUJ, também frenquento uma de Ruby que aborda Rails também.
A Linguagem é muito interessante, conheci o framework e a linguagem a mais de um ano, porém só agora comecei a programar mais a sério, e realmente é muito boa, fantática podemos assim dizer.
Ajax como default no rails é usado implementação do Prototype, que é muito legal, se você já mecheu com o mesmo em Java não terá dificuldade nenhuma dela sob Rails. Por exemplo.
Ajax.updater(’passa aqui o id do componente’, ‘aqui a url’,{ chama callback e efeitos…}); e ae vai é muito legal tudo isso. Cara qualquer dúvida me adicione no GTALK
Oi Urubatan.
Sobre a integração com Ajax e JavaScript: o Rails vem com a biblioteca scriptaculous, criada pelos próprios desenvolvedores do rails. JavaScript é uma linguagem propícia a ser reinventada. Eu até escrevi sobre isso no meu site (http://devlog.waltercruz.com/reinventando_javascript_em_javascript) .
Então, usando scriptaculous e prototype, vc escreve javascript usando uma sintaxe muito próxima à do rails. Tem até templates rjs: rails gerando javascript.
Sobre XML, é fácil fazer webservices, com o actionwebservice, mas ultimamente o rails vem caminhando mais pro lado do REST.
É isso!
[]’s e boa sorte!
- Walter
Olá,
Cara, a produtividade do Rails é mesme fantástica. Exatamente pelo conceito de “Convention Over Configuration”.. Mas eu não posso ter uma base de dados q foje do padrão que o Rails espera? É claro q pode! Aí que entram as configurações.. Tem a questão das rotas tb..
Para coisas mais simples, não é preciso configurar quase nada, porém, para sistemas um pouco mais complexos, poucas configurações são necessárias. E o Rails pode ser tb altamente configurado!
Sem falar no Ruby, a dinâmica da linguagem, closures, métodos abertos, entre outros.
Ajax? Tô pra ver algum framemork que traga uma maior integração Ajax que o Rails, só o fato dos desenvolvedores do Prototype e do Scriptaculous fazerem parte do Core Team de desenvolvimento do Rails já é de grande valia.
Antes um esclarecimento: Não sou inocente, nem xiita, de tentar comparar a velocidade de desenvolvimento em uma linguagem de script com tipagem dinâmica com Java. É o mesmo que tentar convencer o administrador de redes Linux a esquecer os seus .sh e partir para o desenvolvimento de sistemas que façam a mesma coisa.
Ainda em java, existem alternativas mais “convencionais” do que “configurais”
Estou trabalhando em um projeto freelancer e venho usando JPA/Hibernate e Stripes ao invés dos populares Struts, WebWork e Spring MVC e estou gostando do tempo necessário para desenvolvimento.
Falando do Stripes, ele busca no classpath do seu WAR por classes que implementem a interface ActionBean e as disponibiliza seguindo algumas regras de composição do caminho.
[],
AC
Urubatan,
Tenho trabalhado com Java nos últimos dez anos e comecei a trabalhar com Rails no ano passado. Pelo que fiz até o momento, observo que o nível de produtividade realmente é muito acentuado. Rails tem alguns conceitos brilhantes, como a idéia de convenção ao invés de configuração. Mas, o melhor é a linguagem. Ruby é uma linguagem muito poderosa. Você consegue fazer muito mais, com menos código e de forma mais elegante.
Existem algumas características presentes no Ruby que fazem uma enorme diferença e permitem que o Rails seja o que é. Por exemplo, o method_missing. É um conceito usado exaustivamente no Rails, e que faz muita falta em outras linguagens, dificultando ou praticamente impedindo que frameworks desenvolvidos nelas sejam tão naturais e simples de usar quanto o Rails.
Seja como for, sugiro que você invista um pouco mais de tempo em aprender sobre Rails e Ruby. O benefício é inegável.
Pessoal,
e o Grails alguém já testou? Eu dei uma brincada e achei bem legal, bom cópia do RoR
mas tem o Hibernate/Spring integrados… podemos usar uma API para gerar PDF’s, Excel, etc que tem várias em Java por aí…
se precisar por exemplo gerar um Excel/PDF em Ruby como faz?
galera, valeu o incentivo
vou estudar um pouco mais de Ruby e RoR também
parece uma ótima opção 
para criar PDF com ruby você tem que instalar o gem pdfwriter, gems são como “plugins” da linguagem que adicionam funcionaliadades e coisa e tal.
Para criar arquivos .xls eu não sei (ainda)
Oi Urubatan,
Também sou um grande defensor do JAVA, mas fiquei impressionado com a facilidade de Rails e principalmente com a filosofia do Ruby. Tudo muito legal e eficiente. Mas uma coisa que também deve ser levando em conta é a forma como a 37 Signals (Empresa do David Hansson) esta mudando a forma como as aplicações devem ser desenvolvidas.
Acho muito interessante aprender Rails, pois não podemos adaptar o problema a uma única solução como os religiosos por uma tecnologia (Não deixe de ler Beyond Java).
Cada problema possui uma melhor solução especifica e Rails se encaixa muito bem nisto. Tenho um blog e postei um artigo muito legal sobre isto, dá uma olhada: http://www.takenami.com.br/2007/02/07/o-movimento-do-ruby-on-rails/
[]?s
Igor Takenami
Seria interessante, se você pudesse, testar a criação dos mesmos cadastros utilizando python e postar aqui sua opinião sobre as linguagens. Pelo menos pra mim seria muito interessante ter uma visão destas duas tecnologias de alguém com experiência em java.
Abraço.
[…] post é o resultado de aproximadamente 1 semana brincando com o RoR, em casa a noite, ou seja, não dediquei muito tempo a isto […]
RoadHouse wrote:
“Para criar arquivos .xls eu não sei (ainda)”
Eu segui este tutorial. Funcionou bem, se bem que o arquivo que precisei gerar é muito básico. Ou seja, não sei se esse gem é útil em muitos casos.
Não vi diferença entre Python e Ruby!!
Trabalho com Java e Struts e ja fiz algumas coisas em PHP.
Sinceramente, Ruby e Python é tudo a mesma coisa! Será que vcs conhecem Python pra falar tão bem de Ruby ou será que sou EU quem não conheço ambas?
Abraços a todos
No meu post anterior faltou o link para o tutorial de criação de um xls: http://www.donttrustthisguy.com/2006/07/13/creating-excel-documents-with-ruby-on-rails/
Não fui muito além de um Hello World em Python, o que espero mudar em poucos meses, mas me senti bem confortável com a linguagem. Me causou a mesma boa impressão de Ruby. Pretendo usar Django no meu próximo pet project para conhecer o framework.
Abs.
Zaratustra, segunda opção.
Zaratustra, na superfície Python e Ruby parecem muito. Mas se vc começa a ver os intestinos da coisa, são bem diferentes!
Walter, interessante vc dizer isso!!! Eu não cheguei nos “intestinos” da coisa e queria saber exatamente a diferença! Às vezes, vejo muita linguagem bancando de promessa e fazendo as mesmas coisas que as anteriores sem acrescentar muito!
Mas o Ruby tem muita gente falando… muita gente impressionada, por isso a curiosidade!!!!
Qual a diferença entre python e ruby? Qual a vantagen do Rails? Eu usei PHP na época em que aclamavam a produtividade dele e até achei rápido o desenvolvimento, mas é EXTREMAMENTE BAGUNÇADO! Tenho trauma de scripts… por causa do php, pra mim linguagens não tipadas geram programadores do pior tipo!
Espero que eu esteja errado!
Oi Zaratustra. Não acho que eu seja o mais indicado pra falar, mas vamos lá
O básico:
1)Python suporta herança múltipla. Ruby contorna isso através de mixins. (Bom, contornar não é exatamente a palavra. São duas formas de ver o mesmo problema)
2)As classes em Ruby são abertas - você pode acrescenscentar novos métodos mesmo às classes básicas (String, Array, etc). Em python, as classes ‘básicas’ não são abertas
3)O Taq diz no seu livro que é mais fácil escrever extensões para ruby.
4)Ruby foi feita pensando em closures. Closures em python existem, mas são um cadinho burocráticas. Isso irá melhorar no python 3000.
5)Orientação a objetos: python requer o self como primeiro parâmetro para cada método. Tem gente que gosta, tem gente que não. Outros, simplesmente se acostumam.
6)Tem muito mais, que você só descobre mexendo mesmo. Eu vou parar por aqui!
Caro Walter,
Eu conheço o python um pco mais que o Ruby (o q eh facil pq de Ruby eu nao conheço nada) e concordo com todos seus pontos de vista, menos a questão do self… mas isso nao invalida a sua explicação!
Eu achei bem legal e vou prestar atençào no proximo teste no Ruby! Mas de car, ja nao gostei da liberdade de adicionar metodos às classes básicas!!! Isso é o que mais temo nessa nova geraçào de linguagens! Enquanto nao me convencerem de que a bagunça é a maior armadilha dessa nova geração, eu nao apostaria minhas fichas nisso!
Recomendo a todos que aprendam, mas com ressalvas! Pra mim, a melhor forma de aprender a programar é em Java, pq é BEM MAIS RIDIGO! Depois vc deslancha com organização nas outras linguagens…
De qqer forma fica encerro a discussão com essa abordagem do Walter que ja me explicou algumas dúvidas que eu tinha!
Grande abraço companheiros e boa sorte!
Pessoal,
estou estudando o RoR há duas semanas e gostando muito. Até agora vi um ganho de produtividade muito grande, principalmente com os conceitos discutinos nos comentários acima. Outras coisas como: DRY, CallBacks e Observers também merecem uma lida.
Abraços,
Daniel Schmitz
Olá pessoal,
Eu só dei uma olhada de passagem no RoR, quando estava procurando uma linguagem/framework, open source, e independente de plataforma.
Acabei parando no CakePHP, que faz as mesmas coisas que o RoR, só que em PHP, que é um pouco mais conhecido e suportado.
Mas atualmente estou querendo portar meus desenvolvimentos para Java, que é uma plataforma mais conceituada. Tenho receio de ser mal-visto pelo mercado quando apresentar produtos em plataformas que não tem performance garantida, como PHP, por exemplo.
Vcs sabem se existe alguma iniciativa parecida com RoR ou CakePHP para o Java ou DOTNET ?
[]’s
Flavio, eu sinceramente acho que isto não deveria influenciar a escolha da plataforma …
mas para java existe o Grails por exemplo, que é um framework parecido com o Rails, que utiliza a linguagem Groovy e roda sobre a JVM, tem alguma coisa para o .NET mas eu não lembro qual o nome
Não tive a mesma sorte, segui um tutorial e a única coisa que obtive foi uns erros bem escrotos. Alguém ja viu a mensagem “uninitialized constant ActiveRecord(NameError)” ?
CakePHP é excelente.
Seguindo os passos do Ruby on rails, cakephp se torna um dos melhores para trabalhar na plataforma PHP.
Estou muito satisfeito trabalhando com Cakephp aqui na empresa.
[]’s
Bem no momento eu estou em completo desespero atrás de um framework que seja parecido com o rail só q pra java ou para dotnet.
Passei pelo cakephp porém nao gosto de linguagens nao tipadas e acho o php meio bagunçado nao me sinto confortavel apesar do framework ser muito bom.
Rails e Django ainda nao tive a oportunidade de testar mais nao conheço a linguagem e acho q minha curva de aprendizado seria complicada e demorada para ser assimilada.
Para .net existem dois frameworks legais porem com uma comunidade meio reduzida…
O primeiro é o projeto MonoRail da castle que tem o intuito de trazer pro .net os conceitos dos rails e o outro framework é da proprie microsoft q parece ter aberto os olhos para o mvc e esta criando seu proprio framework q é o asp.net mvc porem ainda nao tem versão oficial tem somente previews e falta muita coisa pra ficar usavel.
Ainda estou pensando seriamente em utilizar o java com jsf por gostar da linguagem porem acho o java meio improdutivo pela complexidade e por ser muito metodico.
Talvez o rails ou django sejam minha opção estou estudando pra v o q faço
Ateh