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 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 2
Observe também que RadRails criou uma configuração de servidor. No caso, chamada de usuariosServer.
Figura 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 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 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 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 7
Adicione as linhas mostradas na Figura a seguir e em seguida salve.
Figura 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 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 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 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 12
Novamente a view Console surgirá.
Figura 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 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 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 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 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 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/