Web,ruby, Ajax ou qualquer outra coisa que me venha a cabeça (com prioridade para esta última)

07 dezembro, 2005

RoR 1

Ruby on Rails (RoR) é uma infraestrutura de aplicações para a web escrita em Ruby, uma linguagem de programação com tipos dinâmicos similar à Python, Smalltalk e Perl.

Acaba de passar há pouco tempo um ano desde o aparecimento da RoR em 25 de Julho de 2004. Num intervalo de tempo muito curto progrediu de uma versão 0.5 impressionante até a uma versão 1.0 lançada à pouco tempo que manteve a facilidade de uso e a alta produtividade enquanto adicionava algumas capacidades novas. Este artigo introduz os componentes desta nova versão e explica o bru-a-a que anda à volta desta infraestrutura.

Não pretendo explicar como usar a RoR para escrever aplicações para a Web. Para isso deve começar com: Rolling with Ruby on Rails. Este artigo é uma introdução e roteiro às características da RoR.

Alta produtividade e tempo reduzido de desenvolvimento

Ao nível das capacidades RoR não nos trás nada de novo. Já várias infraestruturas para aplicações para a web o fizeram. Então o que é realmente novo na Ror? O que é que esta infraestrutura trás de diferente. Quando pode acabar aplicações simples em dias em vez de semanas e aplicações mais complicadas em semanas em vez de meses as pessoas começam a notar.

O novo amor teria vida curta se as aplicações web resultantes fossem uma salgalhada e difíceis de manter e ampliar. Felizmente a RoR facilita as boas práticas de programação, o que leva a código fácil de manter e bem factorizado.

A atenção seria também de vida curta se a RoR não tivesse profundidade - isto é, se uma vez experimentada para além das aplicações web mais simples, tivessemos encontrado uma barreira, e nos fosse impossível avançar devido a limitações inerentes. Programadores experimentados que sabem o que fazer na Web repetidamente relataram que não é esse o caso da RoR. Por exemplo James Duncan Davidson recentemente disse:

A RoR é a infraestrutura de desenvolvimento para web mais bem concebida. Digo isto após 10 anos de construção de infraestruturas, ajudei a desenvolver a Servlet API e criei alguns servidores web de raíz. Ninguém o tinha feito desta forma anteriormente. Não estou a dizer que tudo está bem. Não é "perfeita". Tenho alguns detalhes com que não concordo sobre como as coisas devem ser juntas. Mas a "perfeição" não é o ponto. O ponto é que nos põe rapidamente a ser produtivos e tem profundidade suficiente para continuar. A RoR faz isso muito bem.

É difícil acreditar que isto é possível sem desvantagens significativas. Felizmente não tem que julgar a minha palavra (ou a de outra pessoa). Pode provar a sí mesmo num dia ou menos percorrendo um tutorial de RoR e desenvolver uma aplicação simples à sua escolha. Ver para crer! No caso de não se desejar ver espantosamente produtivo, pode ver alguém a fazê-lo vendo o vídeo sobre Ror.

Como é que a RoR o faz?

Como uma boa receita, RoR ajuda a alcançar um novo nível de produtividade combinando os ingredientes correctos nas quantidades correctas. Eis alguns dos ingredientes mais importantes que tornam a RoR naquilo que é:

  1. Ruby

    Muito do poder da RoR advém da linguagem de programação Ruby. A concepção única da Ruby torna fácil criar linguagens específicas de um domínio e fazer metaprogramação. A RoR tira total partido disso.

  2. Infraestrutura MVC completa

    A RoR é uma infraestrutura MVC (modelo, vista, controlador) onde a RoR fornece todas as camadas e funcionam de forma integrada. Outras infraestruturas normalmente só implementam parte da solução, exigindo que o programador integre várias infraestruturas na aplicação e então obrigar as mesmas a funcionarem em conjunto (por exemplo um programador Java poderá usar Hibernate, Struts e Tiles para obter suporte MVC completo.)

  3. Convenção sobrepõe-se a configuração

    Convenção sobrepor-se a configuração significa o fim de ficheiros de configuração XML muito extensos, uma aplicação RoR usa algumas convenções de programação relativamente simples que permitem determinar tudo através de reflexão e descoberta. Por exemplo, RoR usa reflexão inteligente para automaticamente mapear tabelas de bases de dados a objectos Ruby. O seu código de aplicação e a sua base de dados já têm tudo o que a RoR necessita de saber.

  4. Menos código

    Seguindo as convenções simples da RoR faz mais do que eliminar os ficheiros de configuração. Significa também que a RoR pode automaticamente tratar de uma grande quantidade de detalhes de baixo nível sem ter de lhe dizer nada sobre isso. Isto significa escrever menos linhas de código para implementar a sua aplicação. Manter o seu código pequeno significa desenvolvimento mais rápido, menos erros e tornar o código mais fácil de compreender, manter e melhorar.

  5. Geradores

    O uso pela RoR da reflexão de tempo de execução e da metaprogramação elimina muito do código de corta e cola que de outro modo teria que criar. Pode frequentemente evitar o código do tipo corta e cola usando o gerador de scripts integrado para o fazer por si. Isto deixa-lhe mais tempo para se concentrar no código que realmente interessa - a lógica do seu negócio.

  6. Ciclo de desenvolvimento curto

    O ciclo típico de desenvolvimento para teste de uma alteração numa aplicação web tem passos como configurar, compilar, instalar, reiniciar e testar. Isto leva a consumir muito tempo. O ambiente de desenvolvimento RoR não tem nada disto. Nós fazemos uma alteração e vê-mos o seu funcionamento. Não faço o erro de julgar que isto é um ponto menor. É difícil de dizer quanto é que isto melhorar a produtividade e o ajuda a manter um fluxo criativo ininterrupto.

  7. Andaimes

    A RoR pode criar automaticamente um conjunto completo de operações CRUD (Criar, recuperar, actualizar e apagar) e vistas de qualquer tabela de base de dados. Estes andaimes permitem-lhe começar rapidamente com a manipulação das suas tabelas de bases de dados. Ao longo do tempo pode substituir as operações CRUD geradas e as vistas com o seu próprio código - presumivelmente muito mais bonito e funcional.

Continua...

Sem comentários: