Salve, pessoal!
Há algum tempo, decidi migrar do PHP para o Rails
e desde então não tenho feito nada relacionado a PHP e me dedicado
exclusivamente ao estudo e ao trabalho com Ruby on Rails. Os motivos eu expliquei bem
e quase 6 meses depois eu acho que já posso dar uma explanada boa do
que vem sendo meu cotidiano de projetos e experiências com a ferramenta.
Linguagem Ruby
O Ruby é uma linguagem fantástica: o Rails se aproveita muito bem de
todas as capacidades e liberdades (às vezes até libertinagens) dela para
fazer magia com algumas coisas.
É muito impressionante você sair de uma
linguagem estritamente movida basicamente a funções e classes para uma
linguagem mutiparadigma que te deixa programar de várias formas
diferentes.
A adaptação é bem custosa para quem está acostumado com o PHP, mas
vale muito a pena. Existem coisas como esta abaixo que realmente te
deixam feliz.
10.times {
|i| puts i
}
A principal dificuldade que acredito que pode realmente
incomodar é essa cara da maioria das coisas do Ruby, com a qual é preciso se acostumar a
ler e a interpretar. Mas depois que começa a aprender é ótimo.
Gerenciador de pacotes Ruby Gems
Hoje em dia, a maioria das linguagens legais tem seus repositórios de
bibliotecas. No PHP usei bastante o PEAR e algumas coisas do PHPClasses.
No Ruby estendemos seu poder com o uso de gems e estas têm uma maneira
muito legal de rastrear dependências e tudo mais através de um comando
muito simplista:
gem install pacote_magico_ou_arquivo_da_gem
Ao contrário do PEAR, que exige configurações e algumas coisas que um
mortal às vezes não consegue se virar, o comando gem é muito simples e
efetivo. Ele com certeza é a coisa mais legal desde o APT-GET.
Vale avisar que se você seguiu a instalação padrão do rails, ele buscará sempre as coisas do rubygems.org, que é o repositório padrão de gems. O rubygems.org hoje tem trocentas bilhões de gems que ajudam um monte de profissionais a desenvolver e não a reinventar a roda.
O framework Rails
Apesar das trocentas framerworks que temos para o PHP, poucas são
realmente maduras como o CodeIgniter (de todas, a melhor hoje em dia, na
minha opinião), CakePHP, Zend, Prado, Symfony e por aí vai. A comunidade
Ruby se concentra MUITO em usar e divulgar o Rails – framework que
transformou o Ruby em um hype louco de uma hora pra outra.
Porém o merecimento é mais que merecido: o Rails desde a versão 2 é
um framework que vai direto ao ponto, permite uma produtividade
incrível e se aproveita muito da questão do uso de convenções para ficar
ainda mais rápido.
Já trabalhei com frameworks em várias linguagens e posso afirmar que
sentir-se à vontade no Rails é uma questão de dias e o vislumbre vem em
semanas. Claro que existem suas “limitações” – entre aspas, pois na verdade,
dentro do escopo de propósito do Rails, você às vezes tem que sair das
convenções e isso tem seu preço.
A maturidade do framework é outro ponto muito bom: o conceito e a forma de fazer as coisas estão muito bem resolvidos. Ela utiliza um
conjunto muito legal de gems para deixar o framework pronto para subir e
meter fogo sem necessitar de bibliotecas adicionais. É instalar, criar o
projeto e sair codando e pendurando as gems adicionais – SE precisar.
A parte chata (que não é um problema exclusivo dele) é a
documentação: existe muita informação pulverizada e espalhada que às
vezes você tem que garimpar e testar muito. Ao menos fica o aprendizado
no final.
Testes, RSpec e Capybara
O próprio PHP tem uma mania de escrever rápido e ir debugando. Conheço pouquíssimas pessoas que trabalham com testes no PHP, e a ida
para o Rails me deixou ainda mais confiante que sem teste não dá de
jeito nenhum. Talvez isso seja mais uma coisa de cultura da comunidade,
mas as ferramentas também não ajudam muito.
Um dos pontos que mais me deram desgosto no PHP foi a forma precária
como os frameworks trabalhavam com testes. Na Giran, tentamos no
CakePHP, tentamos no CodeIgniter e já estávamos até fazendo nossos
próprios forks e remendos pra conseguir rodar bem os testes unitários,
funcionais e de aceitação. Tudo isso com aquela pergunta: “Putz cara,
será que isso é realmente necessário?”
O Rails se integra de uma forma perfeita ao RSpec, uma ferramenta
brutal de testes, nos permitindo escrever nossos testes de uma forma
muito mais legível.
A integração feita entre os dois é poderosa o
bastante pra tornar a prática de escrever testes uma coisa muito mais
natural e legal de ser feita. Isso no PHP estava se tornando algo MUITO
dolorido e custoso, coisa que não é nem de longe nosso objetivo ao
programar.
Outro lance legal é o Capybara, que permite escrever os testes
funcionais bem rápido também. Estamos fazendo coisas nele e gostando dos
resultados. É simplesmente impressionante como a cobertura de testes da
aplicação está melhor.
Um programador melhor
O mais legal desse tempo é que sem dúvida me tornei um programador
melhor. Você começa a ver as coisas com um pouco mais de calma, consegue
estudar melhor as aplicações, se preocupa mais com a arquitetura e com isso vem um monte de novas coisas legais para estudar que acabam te levando
de volta àquele sentido gostoso de querer saber mais e mais.
Fazia um bom tempo desde que não sentia isso e pensei que que seria
algo só no início dos estudos do Rails, mas cinco meses depois cá estou eu lendo
mais e mais pra descobrir as sutilezas do Ruby e coisas legais de se
fazer no Rails.
Então tá tudo perfeito?
Como eu disse, foram cinco meses de muito aprendizado e coisa bacana, mas nesse período nem tudo foram flores.
- A adaptação pro Ruby para quem vem de outras linguagens não é muito fácil, embora seja muito excitante.
- A documentação do Rails não é tão vasta: é muita ralação para saber os vários jeitos de se resolver as coisas.
- Simplesmente inexiste comunidade Ruby no ES (estamos pensando muito em juntar quem sabe aqui no ES e começar uma).
- Sair da “convenção” do Rails as vezes é bem complexo.
E é isso: tem muita coisa nesse meio que vou escrevendo daqui pra
frente enquanto faço novas descobertas junto com os brothers do time da Giran – novos railers que estão devorando livros e livros comigo.
Até a próxima e simbora!