Feed Artigos Comentários

Ruby - Rails Hildebrando em 02 Set 2008

Ruby On Rails - Dia 2

Uma palavra que resume bem o dia 2 é a seguinte “atualização”. Eu não estava trabalhando com Ruby +2.0 e infelizmente, o livro também segue a versão mais antiga. O problema é que houveram algumas atualizações que tomaram um pouco do tempo do treinamento, no entanto, não impactaram no resultado final. Finalizar o aplicativo CRUD.

Bem, vamos detalhar algumas dificuldades encontradas. O inicio do desenvolvimento foi focado na modelagem das entidades (Model). Hoje adicionamos métodos de negocio, como um metodo para criptografar senha. Tudo ia muto bem até a hora de gerar os controllers e views.

O comando utilizado para isso é o scaffolding

ruby script/generate scaffolding Car

A listagem resultado do comando mostra que tudo foi gerado, no entanto o conteudo das paginas de listagem (index), edicao, novo e visualização não estão com os campos da entidade. Assim tivemos que fazer tudo na mão. Pelo menos serviu para o pessoal dar uma praticada e ir entendendo uma parte da sintaxe dos controllers e views.

Se você não implementou a entidade model, a sintaxe do scaffolding deve ser

ruby script/generate scaffold Car model:string year:integer preco:float data_compra:datetime

Interessante que agora não é mais gerado as telas com um for pesquisando as colunas e sim, é adicionado os campos diretamente. Isso ajuda pois na realidade ao ajustar as telas o mais comum é retirarmos colunas.

Com o scaffolding executado, a estrutura principal das nossas entidades esta pronto. O que nos resta fazer é irmos as especializando e adicionando outras com funcionalidades não ligadas a uma entidade específica.

Para simularmos essa situação implementamos um requisito de autenticação. Dificilmente você ira participar do desenvolvimento de uma aplicação que não utilize recursos de autenticação (e a maioria ainda precisa de autorização também), e para o treinamento essa funcionalidade tem alguns objetivos didáticos :

1) A interface de login não esta associada a nenhuma entidade e portanto deve ser criada a parte
2) O controlador precisa de método fora do padrão CRUD, como login e logout
3) Na logica de autenticação é preciso criar um metodo que saiba o que fazer com o login/senha, e assim trabalhamos com esses métodos de negócio nas entidades (User). Esse método além de realizar manipulação de banco de dados, tambem trabalha um pouco com a sintaxe da linguagem.
4) No controlador (LoginController) manipulamos dados da sessão
5) No controlador manipulamos dados no flash[:notice], especifico para armazenar dados durante uma requisição
6) O redirecionamento das paginas (login com sucesso ou nao)

E tivemos tempo de trabalhar um pouco com filtros. É um assunto com uma leve carga conceitual, porém com uma implementação muito simples.

Resumindo nossos trabalhos, podemos destacar uma revisão em conceitos de OO, pratica na linguagem Ruby, os geradores de codigo script/generate e algumas funcionalidades interessantes como sessao, flash e filtros.

Um outro recurso interessante é para quem não gosta de geradores de código (eu). Ao invés de deixar os controladores gerados pelo scaffolding com todas as assinaturas de métodos, adicione a linha no corpo da sua classe :

scaffold :car

Assim seu controller “ganha” as funcionalidades CRUD padrão, e o numero de linhas de código cai mais ainda.

Observação : Em alguns projetos Java que eu trabalho nós criamos Actions (strus2) genéricas com Jsp genéricos também, assim, para situações em que o CRUD nao precisa de nenhuma especialização não é preciso codificar as telas.

Nos próximos dias vamos aprofundar o assunto em cada tópico.

Até amanhã

Enviar por e-mail  | Hits para esta publicação: 74

Link desta publicação | RSS dos Comentários

Deixe uma resposta.