RRPE Informática: Ruby ao quadrado
PLANTÃO INFO / 08/2008 / TI
Toni Cavalheiro, edição de março de 2008 da INFO
SÃO PAULO - Um novo padrão para serviços web é uma das novidades do Ruby on Rails 2.0.
Um Java mais fácil que o Java — essa é uma das frases que se ouve quando o assunto é Ruby on Rails. Combinando rapidez no desenvolvimento com recursos poderosos, esse framework para criação de aplicativos online já se tornou um dos pilares da web 2.0. Agora, dois anos depois da versão 1.0, chega o Ruby on Rails 2.0, com muitas novidades. A principal é o uso do padrão REST (Representational State Transfer) para serviços web em lugar do mais conhecido SOAP. Há também melhoramentos em várias funções existentes e nos recursos de segurança. Para avaliar as novidades, o INFOLAB testou o InstantRails 2.0, pacote que inclui todos os itens necessários para desenvolver no Windows usando Ruby on Rails 2.0. Confira a seguir os destaques dessa nova edição.
A troca do padrão para serviços web SOAP pelo REST é a mudança mais radical nesta nova versão do Rails. Embora o SOAP ainda seja suportado, há melhoramentos importantes nas funções de acesso a dados via REST e a maneira como o software é configurado ao ser instalado encoraja o uso desse padrão. Em seu blog, o dinamarquês David Heinemeier Hansson, criador do Ruby on Rails, diz que o SOAP estava se tornando complicado demais e que o uso de REST simplifica algumas tarefas. "A menos que você tenha necessidade absoluta de usar SOAP para integração com outros sistemas, nós desencorajamos fortemente essa opção", diz ele. Há um novo componente chamado ActiveResource, que encapsula serviços web e faz com que seja mais fácil usá-los como fontes de dados. Já o antigo componente ActionWebService, normalmente usado com SOAP, não faz mais parte da instalação-padrão, mas ainda pode ser adicionado manualmente.
O Rails 2.0 passa a suportar autenticação básica em HTTP com criptografia SSL, uma solução trivial, mas eficaz. Há também suporte para o uso de um código especial que impede o aplicativo de aceitar requisições de fontes desconhecidas. Assim, ataques realizados por scripts rodando em outro servidor tornam-se mais difíceis. Entre os ataques evitados por esse método estão o cross site request forgery (CRSF) e cross site forgery (XSF).
Há alguns melhoramentos importantes na maneira como o Rails faz o acesso ao banco de dados. Para começar, a versão 2.0 traz um cache de consultas. Quando uma consulta é repetida, o resultado é lido diretamente do cache, evitando a necessidade de um novo acesso ao banco de dados. Com a utilização dessa nova característica, ocorre uma melhora no desempenho de aplicativos que fazem consultas repetitivas. Além disso, o Rails 2.0 traz comandos de redirecionamento que permitem transformar classes de um modelo em rotas a recursos, ou seja, mapear um objeto a um recurso-alvo. Isso torna mais fácil criar referências a registros específicos no banco de dados. Nesta versão, os adaptadores para acesso a gerenciadores de bancos de dados comerciais não fazem mais parte da instalação-padrão. Estão lá apenas os adaptadores para MySQL, SQLite e PostgreSQL. Os outros devem ser adicionados manualmente.
Sessões vão para cookies
Em vez de guardar os dados da sessão do usuário no servidor, como acontecia na versão 1.0, o Rails 2.0 usa cookies armazenadas no próprio micro do internauta para isso. As vantagens são duas. Primeiro, há um ganho de velocidade. Segundo, o administrador do servidor não precisa mais se preocupar com a manutenção do registro de sessões. O método antigo, de armazenar os dados da sessão no servidor, ainda pode ser usado. Fica como opção para aplicações que exigem um nível mais alto de segurança.
Validações numéricas nunca foram um dos pontos fortes do Ruby on Rails. Para testar a validade dos dados digitados num formulário, por exemplo, havia apenas funções que obrigavam que o campo recebesse números inteiros e que permitiam o envio de valores nulos. Agora, o programador passa a contar com diversas funções para comparações entre números e verificação de paridade, além de uma que permite explicitamente que o usuário deixe campos em branco ao preencher o formulário.
Algumas falhas do Rails foram corrigidas na versão 2.0. É o caso das funções usadas para cálculo de datas, por exemplo. Em muitas operações, ela produzia resultados errados por considerar que um mês tinha 30 dias em vez de determinar a duração exata dos meses envolvidos. O problema foi resolvido nesta versão.
O Rails conta, agora, com um novo depurador de código, o ruby-debug, que pode ser adicionado ao pacote com o instalador Gem. Com ele, o programador pode executar o código passo a passo, observar o conteúdo de variáveis e analisar falhas no programa. Basta incluir o comando debugger no código e iniciar o servidor com a opção -debugger. A ferramenta torna-se disponível no terminal.
Rake mais poderoso
A ferramenta de montagem de programas Rake ganhou vários melhoramentos. Entre as novidades há, por exemplo, vários comandos para criar e alterar bancos de dados (como rake db:create, db:drop e db:reset); um comando que gera documentação automaticamente com base nos comentários inseridos no código (rake notes); e um que lista as rotas de acesso a dados (rake routes). São acréscimos bem-vindos, que podem dinamizar algumas tarefas durante o desenvolvimento.
Mais polimento
Há uma grande variedade de outras pequenas novidades que podem facilitar o dia-a-dia do programador. O suporte ao padrão de fontes de conteúdo do tipo Atom, por exemplo, foi bastante melhorado nesta versão. Agora, está mais fácil criar um aplicativo que envia informações via Atom. No Rails 2.0 tornou-se possível separar a renderização da página dos gabaritos que formam a interface com o usuário. Isso traz mais flexibilidade na hora de desenhar as páginas. Por fim, a nova versão traz suporte ao padrão JSON (JavaScript Object Notation) como alternativa ao XML para organizar o envio de dados.
Rob Bazinet e outros
Pacote para desenvolvimento de aplicativos online com Ruby on Rails 2.0
Novos recursos permitem gerar código mais limpo e economizam trabalho de digitação
Não há melhoramentos significativos no desempenho
7,2 (A instalação já inclui o servidor HTTP Apache, o gerenciador de bancos de dados MySQL e algumas ferramentas)
7,2 (É compatível com os principais bancos de dados, mas alguns adaptadores deixaram de fazer parte da instalação-padrão)
8,5 (A estrutura da linguagem Ruby está mais amigável nesta versão)
8,0 (Há ótima documentação na web)
info.abril.com.br/download/5023.shtml
(1) Média ponderada considerando os seguintes itens e respectivos pesos: Instalação (20%), Acesso a dados (30%), Programação (30%) e Documentação (20%)