Aprendendo Rails

Posted by Daniel Lopes on 09/07/2008

Atualizado 11/07/2008: Fabio Akita lançou uma apresentação muito interessante onde ele explica o que é Rails e tira várias dúvida para quem está iniciando.
veja a apresentação do Akita aqui

Este post aqui no blog é só um empurrãozinho inicial para quem está começando com Rails e esclarecer algumas dúvida comuns, claro, sob o meu ponto de vista.

À alguns dias atrás, um amigo meu se interessou por estudar Rails e me pediu alguns links perguntando por onde começar. Pessoalmente comecei no Rails pelo livro Agile Web Development With Rails (já foi traduzido para português e pode ser comprado aqui) e com o livro do Fabio Akita ( também pode ser encontrado aqui). Gosto bastante de livros e por isso comprei de cara dois para poder aprender, mas acredito que a melhor forma de conhecer um tecnologia sem precisar investir dinheiro inicial, é através de links.

Como eu comecei com livros não me lembrava de muito links no estilo aprendendo rails do zero, ou sua primeira aplicação em 3 dias. Resolvi pedir ajuda a grupo de discussão Rails-br e o resultado foi que o post se tornou uma boa fonte de links para iniciar no Rails.

Abaixo coloquei alguns dos links que foram postados no grupo (o post completo pode ser visto aqui )

Se alguém lembrar de algum outro, posta nos comentários que eu atualizo aqui :D .

Agora, continuando, esse meu amigo começou a estudar Rails e hoje me fez algumas perguntas clássicas que acho que é uma das maiores dúvidas que sempre acontece quando alguém pensa em usar Rails comercialmente. Abaixo coloquei as perguntas e as minhas respostas pessoais a cada uma delas:


Já me disseram que rails eh instável e que por isso não é qualquer servidor que segura a onda com ele o que vc diz disso?

Existem várias formas de fazer deploy de Rails em diversos servidores diferentes, mas de fato no inicio do framework essa não era uma realidade e uma das únicas opções era usar FastCGI, o que em alguns casos poderia não ser o suficiente. Mas hoje temos diversas alternativas que já se mostraram extremamente eficientes para 99% do problemas. Alternativas com Mongrel, Passenger, Nginx, Thin e várias outras formas de colocar sua app Rails em produção sem dor de cabeça.

Resumindo, Rails não é instável e aplicações como yellowpages.com (páginas amarelas americana, recebe milhões de requisições dia), basecamp (gerenciador de projetos da 37Signals, utilizamos diariamente em nossos projetos), lighthouse (bug tracking) , github (gerenciador de código e rede social, também utilizamos para os nossos projetos) , Shopify (lojas virtuais em Rails) e mais centenas de outros projetos Rails estão aí para mostrar que Ruby e Rails não são nada instáveis.

Outra coisa que deve surgir com os iniciantes são especulações como Rails não Escala (levantado no Techcrunch sobre o twitter) e comunidade Rails é uma zona (levantado pro Zed Shaw em seu blog).

Na última Rails Conf dezenas de palestras foram realizadas sobre o assunto escalabilidade, mostrando que fazer Rails escalar é muito fácil dependendo da sua arquitetura (não é um problema do framework ou linguagem, mas sim da forma como sua aplicação é desenvolvida) e provando que Rails também pode ser absurdamente performático (basta ver o Passenger e os experimentos com o Maglev).

Quanto ao post do Zed Shaw o que concluímos é que apesar da notória competência dele não devemos levar suas incapacidade de ficar milionário com Rails como um problema que deva nos afastar deste magnífico framework.

Hospedagem de rails em sites como dreamhost, bluehost e ou lunarpages da vida são interessantes?

São interessantes sim, empresas como a Dreamhost possuem boms planos para Rails e inclusive shared hosting com preço acessível e totalmente capaz de ser performático através do Passenger quando o FastCGI não for o suficiente.

Mas aqui na empresa quase sempre utilizamos a RailsPlayground pois o suporte é excelente(realmente excelente, nunca vi nada igual em todos os outros hosts que conheço) e tem toda a estrutura que precisamos( como GIT, Mongrel, Passenger e etc).

Outra boa notícia que temos sobre hospedagem de Rails no Brasil é a Locaweb (pessoalmente não gosto da empresa pois já tive problema graves com hospedagem PHP em projetos grandes) mas Fabio Akita tem feito um esforço muito grande para tornar a Locaweb um grande hosting de Rails no Brasil. Para quem ainda está entrando no Rails talvez não conheça este cara, mas sem sombra de dúvida é extremamente competente e vai fazer um trabalho bom na Locaweb, por tanto vale a pena olhar os planos de Rails da Locaweb e também assinar o feed do blog do Akita pois é excelente.

Renho um freela de administração de sites, ele em teoria seria pra ser feito em php mas achei que seria um bom aprendizado tentar fazer ele em ruby vc acha que é possível ter alguma produtividade e ir aprendendo ao mesmo tempo? ou aconselha a prosseguir com php e só me comprometer com rails qdo estiver mais experiência em desenvolvimento?

Dependendo do prazo para o projeto aconselho começar com Rails sim, nada melhor que a prática para aprender. Uma das grande qualidades do Rails é a capacidade de refatorar, o que permite que caso você faça alguma bobeira em seu código seja possível concertar sem grandes dores de cabeça.

Caso você esteja vindo do PHP sem nenhum framework(ex.: cakephp e symphony) e ORM (ex.: php-object-generator), o que é algo muito comum no mundo PHP, terá um enorme ganho de produtividade no Rails usando o ActiveRecord(como rails trabalha com DB), helpers HTML, testes automatizados e versionamento do seu DB através de migrations. Também terá acesso a uma infinidade de plugins que auxiliam em tarefas repetitivas (ex.: Attachment_fu para uploade de imagens e arquivos e restful_authentication para usuários e autenticação).

Outra coisa é que Rails é bem fácil de aprender e se tornar produtivo mas é muito difícil de se tornar um expert (estou lutando nisso todos os dias :D ) por tanto comece logo e terá resultados rápidos e com o tempo você vai estudando a fundo.

No caso de dúvidas você pode recorrer a grupos como o Rails-br que são bem fortes e ativos, além de poder contar com milhões de tópicos em blogs no mundo inteiro.

Vale lembrar que é bom ter um conhecimento razoável de leitura e escrita em inglês para poder ter acesso rápido a bons recursos e também dar uma importância considerável ao prazo do projeto, pois mesmo com todo o material disponível em Rails por aí, será um processo de aprendizado e aprender algo novo é sempre complicado.

Todo este texto e as repostas são minha opinião sobre o trabalho com Rails mas acho seria mais ou menos essas as respostas que grande parte da comunidade Rails também iria dar.

Espero que este material ajuda algumas pessoas no inicio dos estudos em Rails

blog comments powered by Disqus