Por que usar Ruby On Rails? Convencendo eu, você e seu cachorro de que vale a pena investir seu tempo sobre trilhos
Abril 21, 2007
Inicialmente vou supor que você quer construir alguma aplicação Web (apesar de já existirem projetos para rodar aplicações Rails em desktop e off-line).
Se você não conhece a linguagem Ruby leia isso. Caso não sabe nada sobre o framework Rails leia mais isso. Vou listar três possíveis perfis em que você se encaixa e para cada um deles alguns motivos para você usar Ruby On Rails.
Você trabalha numa empresa pequena / média
Numa empresa pequena ou média o número de clientes da sua aplicação provavelmente não será enorme e então você não terá muitos problemas em relação a desempenho (pelo menos acho que ninguém irá questionar isso).
Neste caso primeiro você deve convencer sua equipe de desenvolvimento. Se sua equipe é você mesmo, trabalho feito. Caso contrário você deve abrir a cabeça dos amantes de Java, .NET e PHP e mostrar-lhes os clássicos screencasts de 15 minutos do Rails (gostou destes? No besttechvideos.com tem mais um monte). Então você explica aqueles conceitos básicos de MVC, DRY (Não se repita) e Convention Over Configuration (Convenção sobre configuração). Por fim vale a pena dar uma passada na linguagem Ruby, com sua sintaxe bela e limpa. Mostre que você consegue programar o FizzBuzz em pouquíssimas linhas e de maneira inteligível.
Próximo passo: convencer a chefia. Nessa hora entra a questão da agilidade. Você deve mostrar como é mais rápido o desenvolvimento (finalmente conseguiremos entregar os projetos no prazo!) e depois cita algumas aplicações famosas de Rails que deram certo. Não se esqueça de falar que com Rails você tem um monte de plugins e extensões (gems) e que ele não terá que tirar um real do bolso para vocês começarem a usá-lo (claro, se seu computador for uma carroça com pouca memória, um upgrade não iria mal).
Se só mostrando sites ou argumentando não for suficiente faça uma apresentação para o público alvo e coloque um pouco a mão na massa. Algo de não mais que meia hora e use algumas das mágicas do Ruby/Rails para deixar o pessoal boquiaberto (um bom momento pra usar o velho recurso de “scaffold”). Um bom ponto de partida para criar uma apresentação “quebra tudo” é procurar por Rails no www.slideshare.net. Confira também as apresentações no blog do Fábio Akita.
Você trabalha numa empresa grande
Numa empresa grande além de tudo aquilo que se faz na empresa pequena é preciso de números, a coisa aqui complica camarada. Quem conhece bem o Rails sabe que faltam várias coisas para que ele se torne uma aplicação de nível “enterprise”. As grandes empresas geralmente estão presas nas tecnologias mais usadas no mercado e querem correr o mínimo de risco (isso é meio contraditório, pois hoje em dia você tem que inovar se quiser sair na frente). Se o projeto em questão é algo novo e experimental (algo não-crítico para a empresa), fica mais fácil você usar o argumento da inovação e importância de se estudar tecnologias novas.
No caso de um projeto grande, a missão será bem mais difícil.
Você terá que estudar um pouco mais de Rails e virar um miniguru (ou quem sabe um dia um verdadeiro son-shi), dar uns bons exemplos de grandes projetos robustos e estáveis (não cite em hipótese alguma os problemas do Twitter) e procurar exemplos de outras empresas grandes que usam e recomendam Rails . Seria bom destacar outras facilidades do framework que ajudam e, muito, quando se trabalha em projetos grandes envolvendo muitas pessoas: criação de testes unitários, migração de banco de dados, integração com controle de versão e com sistemas de rastreamento de bugs.
Mesmo sabendo que o desempenho das linguagens interpretadas (o caso de Ruby e Python) não chega ao pé das compiladas (C#) e das com máquinas virtuais (Java), o futuro do Ruby é promissor. O YARV (Yet Another Ruby Virtual Machine) prometido como presente do natal deste ano trará bons ganhos no tempo de execução das aplicações Ruby. Outras iniciativas como JRuby (um interpretador de Ruby feito 100% em Java) e XRuby (compilador de Java para Ruby) também prometem fazer barulho.
Eu trabalho numa empresa grande. A intranet mundial da empresa é toda feita em Java, bugs e falhas de segurança não faltam. O pior são as aplicações Activex totalmente dependes de IE6. Na área em que trabalho existe outra intranet. Nesta os criadores puderam opinar sobre quase tudo. Escolheram o caminho do SW livre: PHP, Xajax (uma biblioteca de Ajax para PHP), Mysql e mais recentemente o Smarty (permite usar templates em PHP). Tudo cresceu do dia pra noite (ou da noite para o dia) e a intranet virou uma total bagunça, não há documentação muito menos organização no código. Um framework aí não iria mal.
Agora estou trabalhando parcialmente nessa intranet e como não a refarei do zero (não me sentiria mal em ter que fazer isso) não poderei usar Rails. Contudo os desenvolvedores já conhecem RoR e num futuro distante a intranet sobre trilhos poderá virar realidade. Como parte do trabalho, estou remodelando a base de dados: fiz as alterações já considerando as convenções de nomes do Rails.
Mais uma: outro dia me pediram para rodar um fórum simples pra usarmos internamente. Você acha que fui de PHPbb? Não mesmo! Isso foi uma boa oportunidade para eu aprender um pouquinho: mandei ver no Beast, um fórum feito em Rails com apenas algumas centenas de linhas. Tive um problema ou outro pra resolver e hoje o fórum está funcionando razoavelmente bem num PC com Windows XP e servidor Mongrel ( o servidor http criado exclusivamente para rodar aplicações para web feitas em Ruby) .
Então a lição é a seguinte: se você não pode colocar Rails agora na sua empresa por um motivo ou outro já vá preparando o caminho. Aproveite as oportunidades de projetos menores para aprender novas tecnologias e mostre porque você as escolheu.
Você tem uma boa idéia de site para internet e quer ganhar dinheiro com isso
Uau! Você é o próximo webempreendedor! Cada vez que eu leio um ensaio do Paul Graham, a vontade de se lançar no mundo dos negócios é maior. Você precisa lançar seu site Web 2.0 logo, antes que a bolha exploda! Enquanto está aqui lendo esse texto extenso e prolixo tem um nerd codificando a próxima “killer social web application” com cantos arrendados e que mês que vem estará em “beta”.
Eu escolhi Rails pra isso mesmo! Ainda estou na fase de estudos e minha aplicação tem caminhado a passos curtos. Apesar do mercado de internet brasileiro não ser enorme como o norte-americano, segundo o Ibope são 22 milhões de brasileiros com acesso à internet.
A Web 2.0 no Brasil é ainda incipiente, você pode fazer um clone de algum site americano ( não demore, digg e delicious já foram clonados apesar de suas versões tupiniquins deixarem a desejar) ou sair com sua própria idéia. Dois bons exemplos de aplicações feitas em Rails aqui no Brasil são o Spesa do Nando Vieira e o TreinaTom do Carlos Eduardo, dois railistas bem conhecidos na comunidade de Rails brasileira.
O Rails, junto com outros frameworks moderninhos como Django, CakePHP e Seaside tem sido a escolha de muitos dos “startups” da chamada Web 2.0 pelo mundo.
Eu o escolhi basicamente por isso: Conheci um pouco de Python em 2004 e gostei bastante. Quando vi Ruby gostei mais ainda. Depois comparando a quantidade de coisas feitas em Rails e Django, peguei o primeiro (lembre-se, você precisa lançar seu projeto logo, não pode perder tempo com perfumarias). O CakePHP é bem inspirado no Rails, não conheço muito dele mas a excessiva quantidade de cifrõe$ do PHP me cau$a de$conforto vi$ual. Seaside parece ser um framework muito inovador, quebrando mais paradigmas que o Rails, boa sorte (eu acho que vou deixá-lo pro ano que vem caso eu queira sair dos trilhos e aprender smalltalk).
Se você não é um grande hacker, pode até apanhar com RoR um pouco, mas a comunidade estará lá para dar um forcinha…. Passando no google groups, no www.ruby-forum.com ou no www.rubyonbr.org, dificilmente você morrerá com dúvidas e problemas inexplicáveis.
Não desencorajo você a pesquisar sobre outros frameworks que não citei aqui. A melhor escolha dependerá da sua aplicação.
O pessoal do Reddit.com, por exemplo, começou com Lisp e foi para Python. Não gostaram das imposições do framework Django e escolheram o leve web.py.
Conforme seu entendimento sobre aplicações web, plataformas e linguagens evoluir você saberá o melhor caminho e quem sabe fará seu próprio framework de acordo com a sua necessidade (não se esqueça de liberar o código fonte pra gente como fez o David Heinemeir Hanssson, criador do Rails).
Se sua aplicação é mais uma de cadastro ou algo similar, não tenha medo. Você pode até usar o construtor de aplicações web Hobo (baseado no Rails) e facilitar ainda mais seu trabalho. Lembre-se apenas de uma coisa: a medida que precisar customizar e otimizar mais sua aplicação você precisará aprender um monte de coisas. Por isso não pense em Rails como atalho para deixar de aprender sobre HTML, Javascript, CSS, banco de dados, SQL, otimização, configuração do ambiente entre outros. Esse tipo de conhecimento será importante mais cedo ou mais tarde. O que o Rails faz é deixar tudo mais divertido e rápido sem tarefas repetitivas e chatas.
Convenci você? Se sim você pode começar passando pela rubyonbr.org, lendo os tutoriais de Ruby do Taq (é muito importante que você gaste um tempo aprendendo Ruby pois ele tem muitas manhas e truques) e depois ler o “Rails para sua diversão e lucro”.
Caso já tenha passado por esse material em português essa página em inglês aqui é um bom repositório de informações.
Ponha a mão na massa e vamos fazer a Web 2.0 no Brasil acontecer!
Espero ter ajudado Você nessa jornada. Bom divertimento!
Se tudo der certo logo eu terei meu Repensando a Web com Rails para prosseguir meus estudos.
Update: esse artigo está concorrendo ao livro “Repensando a Web Com Rails” que será dado pelo Nando Vieira do Blog Simples idéias. Visite http://simplesideias.com.br/ganhe-o-livro-repensando-a-web-com-rails/ para mais informações.
Update 2: Risquei o Python no local do post em que eu dizia que ele era interpretado (não tinha conhecimento da VM para Python.
Consegui ganhar o livro !
Eu sei que nesse artigo escrevi bastante. Realmente poderia ter feito ele mais “DRY” ao estilo do Rai8ls. Prometo que os próximos posts aqui serão mais enxutos. Por outro lado acho que esse artigo é uma boa leitura para pessoas que estão se iniciando no Rails (que é justamente o meu caso).
Abril 21, 2007 at 1:08 am
Só para lembrar, escrevi esse post para concorrer a um livro que o Nando Vieira do blog simplesideias.com.br dará para quem escreveu o melhor artigo sobre Rails.
Abril 21, 2007 at 7:35 pm
Belo post! Apenas uma pequena correção: Python TEM máquina virtual, só não existe um estágio separado de transformação do código fonte em bytecode. Esse processo ocorre dinamicamente.
E parabéns pelo livro! Ele é ótimo
Abril 21, 2007 at 8:03 pm
Extenso, porém com linhas bem relevantes; bom artigo! ;D
Abril 24, 2007 at 8:43 pm
[...] April 24th, 2007 · No Comments Apenas uma citação. [...]
Junho 24, 2007 at 10:45 pm
Comparações sobre diferentes liguagens são muito importantes para os iniciantes que estão na “fase de escolha” de uma linguagem e não querem se arrepender (muito) depois. Acredito que a linguagem que ganha mais “discípulos” novos é aquela em que seus “mestres” publicam mais artigos dissertando a favor da linguagem.
Para iniciantes, são importantes tanto artigos sobre as características da linguagem quanto os que ensinam a construir aplicativos.
Eu sou iniciante em Web Aplic, e estou há algum tempo passeando em diferentes diferentes sites oficiais, … de comunidades, …, instalando tudo que encontro no meu computador para escolher a linguagem mais certa. Nessa viagem toda aprendi que existem as linguagens “poderosas” e as “ágeis”. Fiquei bem entusiasmado com a promessa de agilidade da Python e da Ruby. Mas sinto muito a diferença que existe em relação à tutoriais, exemplos prontos, manuais. O PHP, por exemplo, tem uma quantidade de sites com tutoriais, e modelos muito grande.
Na verdade existem alguns quesitos que fazem o iniciante decidir por uma linguagem. Talvez eu até faça um artigo sobre isso. Pode ser uma colaboração para que os sites oficiais e de comunidades das diferentes linguagens, frameworks, CMS, etc, se atentem para apresentar um conteúdo mais “acessível” e agradável aos iniciantes como eu.
Julho 12, 2007 at 2:02 pm
Gostei de tudo o que estou lendo sobre Ruby on Rails, porém como estou tentando (e preciso) programa para Web (estou vindo do Delphi/Desktop), minha maior dúvida é:
O que necessito em meu micro:
– Instalei o Ruby
– Instalei o Rails (isto graças as dicas que achei por aqui)
-Posso trabalhar com o Firebird? e o FLEX 2?
se com isto instalado no computador basta. Li alguma coisa que diz haver necessidade de um Server.
Preciso de uma orientação tua, pois percebi que voce tem um alto conhecimento disto. Sei que é básico para você, só que para mim está sendo uma enorme barreira.
Espero contar com seu apoio e antecipamente te agradeço de verdade,
at.
Galeno Rocha (obs. se puder envie para meu eMail-obrigado!)
Julho 20, 2007 at 4:46 am
É bom lembrar que para aqueles conservadores que não deixam .Net por nada.. ainda existe o Castle Project, com o MonoRail..que é 100% sob .Net e lembra muito Ruby on Rails.. já é uma aproximação.. um passo em direção aos trilhos.. xD..
Agosto 9, 2007 at 11:55 am
Excelente postagem! Eu estava pensando em escrever algo do tipo no meu blog, porém vou mudar agora e provavelmente farei referência a esse post.
[]’s!
Junho 22, 2008 at 2:09 am
Olá .
Sou estudante de Analise e Desenvolvimento de Sistemas e tenho acompanhado alguma coisa sobre o RoR.
Minha duvida á a mesma do Galeno abaixo. Estudei Java na faculdade e C mas ainda nao fiz nada em web devel e tambem nao cheguei a trabalhar com programação apenas estudos na faculdade.
Mas vou entrar nos “trilhos”
o quanto antes.. se vc puder me informar eu agradeço.
um abraço
“galeno rocha Says:
Julho 12, 2007 at 2:02 pm
Gostei de tudo o que estou lendo sobre Ruby on Rails, porém como estou tentando (e preciso) programa para Web (estou vindo do Delphi/Desktop), minha maior dúvida é:
O que necessito em meu micro:
- Instalei o Ruby
- Instalei o Rails (isto graças as dicas que achei por aqui)
-Posso trabalhar com o Firebird? e o FLEX 2?
se com isto instalado no computador basta. Li alguma coisa que diz haver necessidade de um Server.
Preciso de uma orientação tua, pois percebi que voce tem um alto conhecimento disto. Sei que é básico para você, só que para mim está sendo uma enorme barreira.
Espero contar com seu apoio e antecipamente te agradeço de verdade,
at.
Galeno Rocha (obs. se puder envie para meu eMail-obrigado!)”