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 :D (faz tempo que não faço isto :D )

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!

32 comments so far

  1. Jair Elton February 23, 2007 11:16 am

    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.

  2. Ricardo February 23, 2007 12:14 pm

    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.

  3. Urubatan February 23, 2007 1:00 pm

    conheço diversos frameworks java :D 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 :D

  4. Jair Elton February 23, 2007 2:26 pm

    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.

  5. Lucas de Castro February 23, 2007 3:06 pm

    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. ;)

  6. 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.

  7. Shairon February 23, 2007 4:09 pm

    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

  8. Inocêncio vulgo Grinvon no GUJ e no RoRBR February 23, 2007 4:43 pm

    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

  9. Walter Cruz February 23, 2007 5:08 pm

    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

  10. ArthurGeek February 23, 2007 6:18 pm

    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. ;)

  11. AC de Souza February 23, 2007 11:15 pm

    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

  12. Vinícius Manhães Teles February 24, 2007 1:34 am

    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.

  13. Ricardo February 24, 2007 10:28 am

    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?

  14. Urubatan February 24, 2007 6:45 pm

    galera, valeu o incentivo :D vou estudar um pouco mais de Ruby e RoR também :D parece uma ótima opção :D

  15. RoadHouse February 26, 2007 10:47 am

    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)

  16. Igor Takenami February 27, 2007 1:32 pm

    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

  17. Matheus February 27, 2007 3:36 pm

    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.

  18. […] post é o resultado de aproximadamente 1 semana brincando com o RoR, em casa a noite, ou seja, não dediquei muito tempo a isto […]

  19. Bruno March 3, 2007 4:51 pm

    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.

  20. Zaratustra March 3, 2007 6:22 pm

    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

  21. Bruno March 4, 2007 1:09 pm

    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.

  22. Diego Pires Plentz March 4, 2007 4:34 pm

    Zaratustra, segunda opção.

  23. Walter Cruz March 22, 2007 9:54 pm

    Zaratustra, na superfície Python e Ruby parecem muito. Mas se vc começa a ver os intestinos da coisa, são bem diferentes!

  24. Zaratustra March 24, 2007 1:47 pm

    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!

  25. Walter Cruz March 24, 2007 2:23 pm

    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!

  26. Zaratustra March 31, 2007 3:05 pm

    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!

  27. Daniel Schmitz April 10, 2007 11:24 am

    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

  28. Flávio August 29, 2007 9:06 am

    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

  29. Urubatan August 29, 2007 9:54 am

    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 :D

  30. Nilton March 25, 2008 7:58 pm

    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)” ?

  31. Renan Lima May 9, 2008 10:11 am

    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

  32. Gardel July 3, 2008 11:24 am

    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

Leave a comment

Please be polite and on topic. Your e-mail will never be published.