Back-End

21 mar, 2007

Criando um CRUD com RadRails

Publicidade

Olá pessoal. Hoje vamos nos aprofundar sobre o RadRails, um excelente ambiente de desenvolvimento tanto para a linguagem Ruby como para seu framework Rails.

Para isso, vamos fazer um CRUD (Create, Read, Update and Delete), que nada mais são do que as quatro operações básicas necessárias para trabalhar com banco de dados.

Antes de começar, vejamos alguns pré-requisitos para este artigo:

1. Baixar e instalar o Ruby e o Rails

http://www.imasters.com.br/artigo/5177/ruby/ruby_on_rails_-_parte_02_instalacao/

2. Ter instalado o Java 1.4 ou superior (necessário devido ao ambiente ser feito sobre o Eclipse IDE)

http://java.sun.com/javase/downloads/index.jsp

3. Baixar e configurar o RadRails

http://www.imasters.com.br/artigo/5301/ruby/radrails/

4. Baixar e instalar o MySQL

http://www.mysql.com/downloads

Criando o banco de dados

O banco de dados que vamos utilizar será chamado de usuarios_development. Para criar este banco de dados, no prompt de comando ou no terminal, você deve fazer o seguinte procedimento:

1. mysql -u usuario -p (pressione a tecla Enter e digite a senha)

2. create database usuarios_development;

Caso você conheça o uso de um GUI para criar o banco de dados, fique a vontade em usá-lo, afinal, produtividade é a palavra de ordem.

O nome do banco é usuarios e após o “underline”, você possui um nome padrão que vamos utilizar, que neste caso seria development.

Para que você entenda o que está acontecendo, o Rails assume três ambientes de execução para o banco de dados: development, test e production. O primeiro, que é o padrão, é usado para o desenvolvimento da aplicação Web. O segundo é usado para executar unit tests na aplicação. O último é usado para colocar a aplicação em produção. Cada um deles possui algumas diferenças que facilitam o trabalho do Rails nestes contextos.

Embora possamos criar os três bancos de dados, vamos utilizar apenas o de desenvolvimento neste artigo.

Criando seu projeto

Antes de começar, vale reforçar que a IDE deve estar configurada. Portanto, caso não esteja, veja o link mostrado no passo 3 nos pré-requisitos.

Na sua IDE, inicie criando um projeto Rails, da seguinte forma:

1. Clique com o direito do mouse sobre a view Rails Navigator e, no menu de contexto, selecione o item New e clique em Rails Project. Alternativamente você pode ir ao menu File e, no item New, clicar em Project. Na caixa de diálogo New, você expande o nó de Rails, seleciona Rails Project e clica no botão Next.

Figura 2Figura 1

2. Na caixa de diálogo New Rails project digite usuarios em Project name. Mantenha os demais itens como está e clique no botão Finish. Neste momento o RadRails criará um projeto chamado de usuarios, que pode ser visto na view Rails Navigator. Se você expandir o nó deste projeto, perceberá que diversos outros diretórios foram criados. O nome do projeto é igual à parte do nome do banco de dados. Em um projeto chamado de usuarios, Rails faz automaticamente referências a três banco de dados: usuarios_development (o qual você já criou anteriormente), usuarios_test e usuarios_production.

Figura 2Figura 2

Observe também que RadRails criou uma configuração de servidor. No caso, chamada de usuariosServer.

Figura 3Figura 3

Criando um Model

Ruby on Rails trabalha no conceito (ou paradigma) do padrão MVC (Model-View-Controller). Em um outro artigo poderei até me ater a maiores detalhes a respeito do padrão de desenvolvimento MVC, mas a princípio, entenda que para lidar com o banco de dados criado, usuarios_development, Rails usa um Model.

Para criar o Model, selecione o projeto criado na view Rails Navigator e siga os passos:

1. Na parte inferior da IDE, clique na view Generators.

2. Na lista drop-down, selecione model.

3. Mantenha a opção Create marcada no botão de rádio.

4. Do lado direito do drop-down onde você selecionou model, digite Usuario.

5. Clique no botão Go para gerar a classe Usuario.

Figura 4Figura 4

Aguarde alguns instantes para que a IDE gere a classe. Observe que a view Console mostrará a execução para a geração da classe.

Figura 5Figura 5

Com os passos executados para criar o Model, você criou o nome de uma classe que trabalhará com uma tabela chamada usuario.

Na view Rails Navigator, expanda o nó do seu projeto. Em seguida expanda de app e models. Dê um duplo clique em usuario.rb. O arquivo usuario.rb será aberto no Editor da IDE.

Repare que o código gerado contém apenas duas linhas. Simples não?

Com apenas este código, o Rails mapeia a tabela. Este model já está pronto para ser usado. Mas não se enganem, por trás disto há muito que vocês não estão vendo.

Figura 6Figura 6

Gerando a tabela do banco de dados

Mesmo tendo criado o banco de dados, você não gerou nenhuma tabela. A muito tempo atrás você poderia criar uma tabela diretamente no banco de dados (há quem faça isso até hoje). Na atualidade você pode usar um programa de modelagem (MER) ou o UML.

Mas quando você está trabalhando com Rails, há também uma outra alternativa: gerar diretamente por ele.

Voltando a view Rails Navigator, expanda o nó de db e depois de migrate. Dê um duplo clique no arquivo encontrado neste local, que deverá se chamar de 001_create_usuarios.rb. Este arquivo foi gerado quando você criou o Model da sua aplicação.

Figura 7Figura 7

Adicione as linhas mostradas na Figura a seguir e em seguida salve.

Figura 8Figura 8

Para facilitar seu desenvolvimento, exiba o número de linhas do Editor, clicando com o direito do mouse sobre a faixa branca lateral esquerda. No menu de contexto, selecione o item Show Line Numbers

Figura 9Figura 9

Para que você compreenda o que este código irá fazer, será similar a uma tabela escrita em SQL, no MySQL, da seguinte forma:

CREATE TABLE usuarios (
	id int(11) NOT NULL auto_increment,
	nome VARCHAR(255) NOT NULL,
	email VARCHAR(255) default NULL,
	login VARCHAR(20) NOT NULL,
	senha VARCHAR(20) NOT NULL,
	autorizado TINIYNT(1) default NULL,
	PRIMARY KEY  (id)
) 

Perceba que no Rails, o tipo string é no MySQL o VARCHAR. Um campo do tipo VARCHAR do MySQL aceita um número máximo de 255 caracteres. Isso significa que se você não disser quantos caracteres vão ser aceitos, o máximo é criado.

Para que um campo não seja NULO, você utiliza a declaração: null=>false.

Caso a intenção seja de dizer uma quantidade máxima de 20 caracteres em um campo, então você utiliza: limit=>20.

O campo booleano no MySQL é ditado por TINYINT. Por isso, no campo autorizado fora utilizado boolean.

Na parte inferior do Workbench do RadRails, clique na view Rake Tasks. Clique no drop-down desta view e selecione o item db:migrate. Clique no botão Go para confirmar.

Figura 10Figura 10

Você vê a geração da tabela na view Console, que é chamada automaticamente pelo RadRails, para confirmar mostrando as mensagens migrating e migrated. O que está acontecendo, na realidade, caso você não conheça Ruby on Rails, é que o comando Rake foi invocado neste momento.

Figura 11Figura 11

Criando um Scaffold

Em um bom inglês, scaffold tem mais de um significado. Um deles, scaffold (andaime) pode ser uma estrutura temporária que apóia os construtores enquanto eles trabalham. Mas em Rails, a palavra scaffold é um local para uma página Web temporária. A página fornece uma simples conectividade ao banco de dados, dando ao desenvolvedor o poder de manipulá-lo. Em palavras mais simples, ele fornece uma estrutura básica para operações que temos na manipulação de dados como: inserir, atualizar, selecionar e excluir.

Ele gera interfaces rápidas que ajudam o desenvolvimento até que seja adicionado os códigos necessários para o desenvolvimento real da aplicação.

Para criar um scaffold, vá a view Generators e siga os passos mostrados a seguir:

1. Na lista drop-down digite ou selecione scaffold.

2. Mantenha o botão de rádio Create selecionado.

3. No drop-down ao lado de scaffold (onde você selecionou), selecione Usuario.

4. Clique no botão Go para criar.

Figura 12Figura 12

Novamente a view Console surgirá.

Figura 13Figura 13

Na view Rails Navigator, expanda app e também controller. Em controller você visualiza o arquivo usuarios_controller.rb. A execução do scaffold gerou a classe do modelo de dados, o controller e views para cada ação CRUD necessária. Como o model já existia, ele não foi criado.

Executando a aplicação gerada

Antes de observar qualquer código, é interessante visualizar o que o Rails gerou, através da ide RadRails, em execução. Na parte inferior do Workbench, na view Servers, clique no botão Launch Browser (o que tem o desenho do globo).

Figura 14Figura 14

Como o Eclipse suporta a inclusão de um browser interno, no RadRails não poderia ser diferente, uma vez que ele está sobre o Eclipse.

A mensagem de confirmação Server Error surgirá, indicando que você não iniciou o servidor. Ele pergunta se você deseja iniciar o servidor. Basta clicar no botão Yes.

Figura 15Figura 15

Observe que a porta do servidor de desenvolvimento usado pelo Ruby on Rails é 3000. Dentro do RadRails, surgirá um browser com uma página padrão contendo na o endereço http://localhost:3000/. Acrescente no endereço o nome do seu projeto, ficando da seguinte forma:

http://localhost:3000/usuarios

Observe que já foi gerado uma página inicial. Além de ter uma página inicial, também foram geradas as folhas de estilo (CSS) para a aplicação.

Figura 16Figura 16

Clicando no link New usuario, você é levado a página de cadastros. Aqui, você pode olhar o código fonte e ver que não há tabelas, puramente Web 2.0.

Figura 17Figura 17

Quando você cria os usuários, observe que uma lista é gerada, exibindo os cadastros já efetuados. Além disso, você ainda conta com dois links com comportamentos importantes: Edit e Destroy. O primeiro leva você para o formulário de edição dos dados cadastrados e o último exclui o cadastro efetuado.

Figura 18Figura 18

Abrindo o arquivo controller usuarios_controller.rb, você pode observar que ele possui códigos com a chamada de comportamentos específicos, necessários para a geração do CRUD.

As páginas geradas para a interface podem ser vistas na view Rails Navigator, expandindo app>view>layouts e usuarios.

Bom pessoal, a meta deste artigo foi de criar e testar um scaffold — um protótipo simples para uma possível interface Web mais complexa. Embora simples, não deixa de ser a base do desenvolvimento de muitas aplicações Web. Nas próximas matérias vamos desenvolver aplicações mais complexas, sempre utilizando uma IDE de ponta para um desenvolvimento mais produtivo.

Para ler e aprender

Em português e sem custo algum:

http://eustaquiorangel.com/files

http://logbr.reflectivesurface.com/2006/10/09/rails-para-sua-diversao-e-lucro

http://railsbrasil.com.br/articles/2006/07/29/tutorial-rails-1/