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

08 dezembro, 2005

RoR 2

Esta é a segunda parte do artigo: RoR

Componentes RoR

A RoR consiste ela própria em vários componentes, que pode instalar e usar em separado. Contudo foram concebidos para trabalhar em conjunto de forma integrada e normalmente os programadores usam-nos em conjunto.

  • O Active Record é a camada de correspondência entre objectos e base de dados relacional (ORM) que liga os objectos de negócio (modelos) a tabelas de base de dados. É uma implementação do padrão Active Record descrito por Martin Fowler.

  • O Action Pack é o componente que implementa as partes de vista e controlador numa arquitectura MVC. A parte "controlador" trata os pedidos chegados do navegador do utilizador e dirige os pedidos para o método correcto numa classe de controlo. A parte "vista" constrói uma resposta e envia-a de volta, ao navegador, usando um sistema de modelos similar ao do ASP ou do JSP.
  • O Prototype é o componente que implementa o Ajax, arrastar e largar, e outros efeitos visuais nas suas páginas web.
  • O Action Mailer é o componente que trata de enviar e receber correio electrónico.
  • O Action Web Service é o componente que torna fácil a adição de API de serviços web à sua aplicação web. O Action Web Service suporta SOAP, XML-RPC, e WSDL.

Características Gerais

A RoR tem algumas características gerais e algumas específicas.

Servidores de web

A RoR pode funcionar praticamente com qualquer servidor web que implemente CGI. Contudo, a performance do CGI é má e assim sendo o modo de distribuição de uma aplicação RoR é usando FastCGI. Houve um ensaio extenso de distribuição de aplicações RoR tanto com Apache como com LightTPD. Há ainda a entrada em cena recente do SCGI, com uma performance semelhante à do FastCGI sem a complicação da instalação.

Durante o desenvolvimento é normalmente mais fácil usar o Servidor Web WEBrick que está incluído na Ruby.

Bases de dados

A RoR actualmente contem suporte para as seguintes bases de dados:

Para implementar um adaptador de base de dados em Ruby leva-se cerca de 100 linhas, assim adicionar adaptadores a esta lista não é particularmente oneroso.

Depuração

Quando algo corre mal dentro de uma aplicação web baseada em RoR, obtem-se uma mensagem de erro muito detalhada no seu navegador (quando a mesma é executada em modo desenvolvimento). Normalmente estas mensagens de erro são suficientes para diagnosticar o problema. Quando tal não se passa tem outras opções. Por exemplo:

  • Inserir informação no controlador como em:

    render_text "Cheguei aqui"

    ou

    render_text "objecto de utilizador =" + obj_utilizador
  • Verificar os ficheiros de registo da RoR. Ver os ficheiros developemnt.log, production.log e fastcgi.crash.log.

    Lembrar-se de também observar os ficheiros de registo do servidor web.

  • Usar pontos de paragem.

  • Usar um IDE comercial (como o ArachnoRuby com um depurador integrado).

URL simpáticos

A correspondência entre URL e acções de controlo são muito simples e fáceis de compreender. A RoR tenta apresentar ao utilizador URL simpáticos. Os URL da RoR são simples e directos, não sendo nem longos nem parecendo cifrados.

Mesmo assim pode alterá-los usando as capacidades de encaminhamento da RoR. O encaminhamento de URL da RoR é suficientemente flexível para permitir criar virtualmente qualquer esquema de correspondência de URL.

A capacidade de encaminhamento da RoR é obtida com código Ruby puro permitindo o uso de expressões regulares. Visto a RoR não usar a capacidade de encaminhamento do servidor Web (como o mod_rewrite em Apache), as correspondências de URL por nós definidas funcionam em qualquer servidor de web, da mesma forma.

Teste Unitário

A RoR facilita activamente os testes unitários:

  • A geração de novos controladores, modelos e a construção de andaimes cria os esqueletos dos testes unitários;
  • correspondentes.

  • A arquitectura estritamente MVC tende a naturalmente resultar em acções e componentes que se possam testar;
  • A RoR inclui um script Rake (Ruby Make) que automaticamente executará todos os testes unitários.

Para mais detalhes pode ler Um guia de testes com RoR.

Active Record

Active Record é a parte da RoR que trata da correspondência automática entre tabelas de bases de dados e os objectos dos modelos no momento de execução. É o M em MVC e é a implementação da camada ORM em RoR.

Para todos os casos de uso mais corrente (e alguns não tão correntes como isso), não irá necessitar de usar SQL quando aceder ou actualizar a sua base de dados. O objectivo do Activo Record é especificamente trabalhar com bases de dados relacionais. Não tenta abstrair o uso do SQL. O Active Record torna fácil usar o seu SQL à medida para aqueles casos em que seja necessário. Mesmo que tal seja raramente necessário.

Continua...

2 comentários:

Diego Souza disse...

Boa postagem :-)
Na parte do AJAX e efeitos visuais faltou citar a biblioteca scriptaculous que também tem grande importância.

Diego Souza
http://diego-souza.blogspot.com

Carlos Afonso disse...

Em 2005 ainda não conhecia a scriptaculous. Não sou um grande adepto de usar uma tecnologia só para dar brilho a um sítio, como poderá ver no meu artigo sobre ajaxulação [(relativamente recente) de facto uma chamada para um artigo que li na net]