Criando um weblog Ruby em dez minutos
Contribuição de Brian Leonard, manutenção de Gail Chappell
Dezembro de 2007 [Número da versão: V6.0-6]
Neste tutorial, use o suporte a Ruby no NetBeans IDE para criar e executar uma aplicação Web simples. O exemplo mostra como criar um weblog Ruby. Siga o fluxo de trabalho básico de criação de modelo, adição de controlador e criação de visualização.
Conteúdo
Requisitos do tutorial
Este tutorial requer as tecnologias e os recursos seguintes:
Observação: este tutorial, escrito para o Rails 1.2.5, envolve scaffolding.
Não há suporte para scaffolding a partir do Rails 2.0.
Criando o banco de dados de amostra
Observação: este tutorial usa o servidor de banco de dados MySQL. Consulte Instalando e configurando suporte a Ruby para obter informações sobre o uso de um servidor de banco de dados MySQL em uma aplicação Ruby.
Este documento também contém dicas sobre como usar o servidor de banco de dados Java DB.
Antes de criar o projeto Ruby on Rails, crie um banco de dados rubyweblog_development, conforme descrito a seguir.
- Abra uma janela de comando.
- Caso ainda não tenha sido iniciado, inicie o servidor de banco de dados MySQL.
- Digite o seguinte comando para criar o banco de dados de desenvolvimento e pressione Enter.
mysqladmin -u root -p create rubyweblog_development
Observação: se o usuário raiz não tiver uma senha obrigatória, omita o argumento -p.
Criando o projeto Ruby on Rails
Comece criando um projeto Ruby on Rails. Por padrão, a aplicação é criada em uma estrutura de diretórios que esteja de acordo com as convenções do projeto Ruby on Rails para aplicações.
- No NetBeans IDE, escolha Arquivo > Novo projeto.
Selecione Ruby no campo Categorias e Aplicação Ruby on Rails no campo Projetos. Clique em Próximo.
Observação: na primeira vez que um projeto Ruby é aberto ou criado no IDE, o IDE verifica se há outras instalações do Ruby além do software JRuby fornecido. Caso haja, o IDE exibe uma caixa de diálogo solicitando que você selecione qual software deseja usar.
Escolha JRuby se você desejar usar o intérprete JRuby fornecido ou escolha a sua instalação do Ruby, caso prefira utilizá-la. Para obter mais informações, consulte Configurando o IDE para usar sua própria instalação do Ruby no tutorial Instalando e configurando Ruby.
-
Digite
rubyweblog no campo Nome do projeto.
Aceite todas as outras configurações padrão.
Clique em Terminar para criar o novo projeto.
O IDE cria o diretório do projeto com o mesmo nome do projeto. Você verá o seguinte:
- As categorias básicas da aplicação na janela Projetos. Os nós particularmente interessantes são: Controladores, Modelos e Visualizações. Neste tutorial, siga o fluxo de trabalho básico de criação de modelo, adição de controlador e criação de visualização.
- Uma lista dos arquivos que fazem parte da aplicação na janela de saída. Você pode clicar em um link na janela de saída para abrir um arquivo na área de edição.
- O arquivo
database.yml na área de edição.
Configurando o ambiente do banco de dados
A próxima etapa é editar o arquivo database.yml,
que já está configurado para usar o adaptador MySQL
e o banco de dados de desenvolvimento. Não é necessário fazer qualquer configuração a menos que o usuário raiz requeira uma senha.
- Na área de edição, edite o arquivo
database.yml fornecendo a senha na configuração do desenvolvimento.
Salve e feche o arquivo database.yml.
Observação: se o arquivo do host do sistema operacional não tiver localhost, use 127.0.0.1.
Criando o modelo
Aqui você usa o Gerador de Rails para criar um modelo para a aplicação. A aplicação rubyweblog requer um modelo Postagem para armazenar instâncias de postagens de blogs.
- Na janela Projetos, clique com o botão direito do mouse no nó Modelos e escolha Gerar.
-
Na caixa de diálogo Gerador de Rails, digite Post title:string no campo Argumentos e clique em OK.
O Gerador de Rails cria um modelo chamado Postagem. A janela de saída lista os arquivos criados como parte da geração do modelo:
- app/models/post.rb. Um arquivo que possui os métodos do modelo Postagem.
Este arquivo também é aberto na área de edição.
- test/unit/post_test.rb. Um teste de unidade para verificar o modelo Postagem.
-
test/fixtures/posts.yml. Uma ferramenta de teste para preencher o modelo.
-
db/migrate/migrate/001_create_posts.rb. Um arquivo de migração para definir a estrutura inicial do banco de dados.
Migrando o banco de dados
O arquivo com o qual você trabalhará em seguida será o arquivo de migração, 001_create_posts.rb.
-
Na janela de saída, clique no link do arquivo 001_create_posts.rb.
O arquivo é aberto para mostrar o método self.up, que cria uma tabela chamada postagens e o método self.down, que desfaz a tabela postagens, conforme mostrado no seguinte código de exemplo:
Código de exemplo 1: código para 001_create_posts.rb |
class CreatePosts < ActiveRecord::Migration
def self.up
create_table :posts do |t|
t.column :title, :string
end
end
def self.down
drop_table :posts
end
end
|
-
Na janela Projetos, clique com o botão direito do mouse no nó rubyweblog e escolha Migrar banco de dados > Para versão atual.
Esta ação atualiza o banco de dados para incluir a tabela de postagens. A janela Saída indica quando a migração está completa.
Criando um controlador
Agora, use o Gerador de Rails para criar um controlador para interagir com o modelo Postagem. Neste tutorial, adicione código de scaffolding, que fornece uma interface de CRUD simples para criar, ler, atualizar e excluir entradas no blog.
-
Na janela Projetos, clique com o botão direito do mouse no nó Controladores e escolha Gerar.
Na caixa de diálogo Gerador de Rails, digite Blog no campo Nome. Deixe o campo Visualizações em branco. Clique em OK.
Esta ação cria o arquivo blog_controller.rb e abre o arquivo na área de edição. Um nó blog_controller.rb é adicionado no nó Controladores na janela Projetos.
-
Edite blog_controller.rb adicionando o seguinte código de scaffolding, que fornece uma aplicação CRUD simples em torno do modelo Postagem:
Exemplo de código 2: código de blog_controller.rb |
class BlogController < ApplicationController
scaffold :post
end
|
Executando a aplicação
Agora, teste a aplicação.
-
No nó Configuração, abra routes.rb. Encontre a linha:
# map.connect '', :controller => "welcome"
- Edite a linha removendo o sinal de comentário (#) e alterando
welcome para blog.
-
Expanda o nó Público, clique com o botão direito do mouse em index.html e escolha Excluir.
index.html exibe uma página de boas-vindas padrão, que não é o que você deseja. Quando você exclui index.html, o Rails procura no routes.rb para descobrir qual página deve ser exibida, conforme definido no blog na etapa anterior.
- Escolha Arquivo > Salvar todos.
-
Clique no botão Executar projeto principal na barra de ferramentas.
Esta ação inicia o servidor WEBrick, que é parte da estrutura do Ruby on Rails e inicia o navegador da Web. Veja a seguir a primeira página da aplicação.
Figura 1: Página inicial do rubyweblog
-
Clique no link Nova postagem para exibir a segunda página da aplicação, mostrada abaixo.
Figura 2: Página para criar uma nova postagem
-
Indique um título e clique em Criar.
Veja a seguir um exemplo de postagem de blog.
Figura 3: Postagem de blog bem-sucedida
Fazendo mais: Adicionando outro campo
Aqui, você adiciona outro campo para que, além do campo Título, a tabela de postagens inclua uma coluna Corpo para fornecer o texto do blog. Você já deve estar familiarizado com as etapas de criação de um campo.
-
Clique com o botão direito do mouse no nó de migração de banco de dados e escolha Gerar. Na caixa de diálogo Gerador de Rails, digite AddBody no campo Argumentos e clique em OK.
O IDE cria o script de migração versionado 002_add_body.rb e abre o arquivo na área de edição.
-
Abra uma linha em def self.up, digite mcol e pressione Tab.
O IDE substitui o disparador mcol pelo seguinte modelo de código com 3 parâmetros:
add_column :table, :column, :string
Digite posts para substituir o primeiro parâmetro e pressione Tab. Digite body e pressione Tab novamente. Em seguida, digite text para susbtituir o terceiro parâmetro. A linha deve se parecer com a seguinte instrução:
add_column :posts, :body, :text
Esta migração adiciona uma coluna de corpo à tabela de postagens.
- Escolha Arquivo > Salvar todos.
-
Clique com o botão direito do mouse no nó do rubyweblog e escolha Migrar banco de dados > Para versão atual.
Como alternativa, clique com o botão direito do mouse no arquivo de origem e escolha Executar do menu pop-up.
-
Retorne ao navegador e clique no link Nova postagem para ver como o Ruby reconhece o novo campo de corpo, mostrado na figura a seguir.
Figura 4: Nova postagem com campo de corpo
Crie mais algumas entradas de blog. Por exemplo:
Figura 5: Mais postagens de blog
Fazendo mais: Validando entrada
Aqui, adicione código à classe Postagem para garantir que os usuários forneçam valores para os campos de título e corpo.
- Na janela Projetos, expanda o nó Modelos e clique duas vezes em post.rb para abrir o arquivo no editor.
Abra uma linha na definição Classe, digite vp e pressione Tab.
O IDE substitui o disparador vp pelo seguinte modelo de código:
validates_presence_of :attribute
- Digite title, :body. O código deve se parecer com a seguinte instrução:
validates_presence_of :title, :body
Execute a aplicação, clique em Nova postagem e, em seguida, em Criar.
A aplicação agora informa que o título e o corpo não podem ficar em branco.
Fazendo mais: deixando a lista com aparência de blog
Até agora, o método de scaffold usado no BlogController criou uma aplicação CRUD básica que permitiu que você testasse facilmente o modelo Postagem. Agora, gere as mesmas visualizações usadas pelo método scaffold para que você possa personalizar a interface de usuário.
- Na janela Projetos, clique com o botão direito do mouse no nó Visualizações e escolha Gerar.
- Na caixa de diálogo Gerador de Rails, escolha scaffold da lista suspensa Gerar.
-
Digite Postagem no campo Nome do modelo e Blog no campo Nome do controlador.
Deixe o campo Ações em branco. Selecione Sobrescrever para forçar o BlogController a ser regenerado e clique em OK.
O IDE cria uma visualização para o modelo Postagem e lista o conteúdo na janela de saída.
-
Expanda Visualizações > blog e abra list.rhtml, que é usado para mostrar a lista de entradas de blog. Exclua as marcas <h1> e <table> e substitua-as pelo seguinte código:
Exemplo de código 4: código para list.rhtml |
<h1>O Ruby Blog</h1>
<% @posts.each do |post| %>
<h2><%= post.title %></h2>
<p><%= post.body %></p>
<small> <%= link_to 'Permalink', :action => 'show', :id => post %></small>
<hr>
<% end %>
|
Para cada instância de uma ação post, este código produz um título, um corpo e um Permalink, como mostrado na Figura 6.
Dica: liai (link com uma ação e um índice) é o disparador do seguinte modelo de código:
<%= link_to "link text...", :action => "edit", :id => @item %>
-
Execute a aplicação para ver a nova interface do modelo Postagem.
Figura 6: Interface de modelo nova e aprimorada
-
Para exibir o blog com a entrada mais recente primeiro, inverta a ordem de classificação adicionando .reverse ao final de @posts em list.rhtml:
<% @posts.reverse.each do |post| %>
Quando você salvar o arquivo e atualizar o navegador, o blog será exibido conforme mostrado na figura a seguir.
Figura 7: Postagens de blog em ordem inversa
Próximas etapas
>> Mais documentação do NetBeans Ruby