Fuentes Vinícius Baggio - Ruby on Rails: coloque sua aplicação web nos trilhos стр 24.

Шрифт
Фон

Completed 200 OK in 12ms (Views: 10.3ms | ActiveRecord: 0.2ms)

É sempre importante estar de olho nessas requisições. Podemos observar

os parâmetros enviados pelo usuário, as consultas SQLs resultantes, o

tempo gasto em cada parte da aplicação e o código de resposta enviado

ao usuário.

4.4

Os arquivos gerados pelo scaffold

Vimos há pouco tempo que o scaffold gerou vários arquivos para nós. Mas o que

significa cada um deles? O que eles fazem e qual seu impacto no nosso projeto?

Migrações

Migrações são pequenos deltas de um banco de dados, ou seja, elas registram as

modificações que o schema, ou esquema, do banco de dados vai sofrendo. Elas con-

tém três informações importantes: uma informação de versão, um código de regres-

são e um código de incremento e todas elas ficam dentro do diretório db/migrate

do projeto.

Uma migração então possui um método up, que será executado quando o banco

for migrado de uma versão à outra. Quando houver a necessidade de se regredir

uma versão, talvez por causa de um bug, o método executado deverá ser o down. O

nome da versão da migração encontra-se no nome do arquivo, que nada mais é do

que uma data (ano, mês, dia, hora, minuto e segundo).

91

4.4. Os arquivos gerados pelo scaffold

Casa do Código

O Rails já conhece também o equivalente de desfazer para alguns comandos,

como drop_table para desfazer um create_table. Assim, é possível criar o método

change, que substitui ambos up e down. Você escreve o comando para incremento de

versão e o Rails encontra o equivalente quando a versão for decrementada, poupando

retrabalho pelo desenvolvedor.

Veja a pasta db/migrate. Lá haverá um arquivo que inicia com uma data, que

depende da hora que você executou o comando, e termina com _create_rooms.rb:

class CreateRooms < ActiveRecord::Migration

def change

create_table :rooms do |t|

t.string :title

t.string :location

t.text :description

t.timestamps

end

end

end

Vimos que, para executar as migrações pendentes, basta executar:

rake db:migrate

No capítulo 5, vamos revisitar e aprofundar em outros comandos de migrações.

Modelo

O arquivo room.rb gerado pelo scaffold no diretório app/models é o modelo que

tem seus dados guardados no banco de dados quando você clica no botão Create

Room. Nesse arquivo também ficam as regras de validação, relacionamentos com

outros modelos e outras coisas. O código atual é simples e veremos como customizá-

lo no futuro:

class Room < ActiveRecord::Base

attr_accessible :description, :location, :title

end

Os próximos dois arquivos são relacionados a testes.

92

Casa do Código

Capítulo 4. Primeiros passos com Rails

Teste unitário

Testes unitários são artefatos muito importantes para um sistema de qualidade.

Escrever teste, porém, é algo que é bastante complicado para iniciantes, pois existe

muita subjetividade em como escrever um teste. Por exemplo, devemos escrever um

teste antes do código de produção (ou seja, código que vai ser de fato executado

quando o site estiver no ar) ou depois? Devo usar qual técnica? Como usar mocks e

quando usar stubs?

Esse assunto é bastante complicado e importante, portanto recomendo a leitura

dos livros The RSpec Book, [5] e o Test-Driven Development: By Example [2]. A comu-

nidade Rails leva testes tão a sério que o próprio framework vem com um

conjunto

de ferramentas para auxiliar o desenvolvedor a criar criá-los.

Um exemplo disso são os arquivos gerados. Toda vez que o Rails gera um mo-

delo, controle ou apresentação, arquivos equivalentes para cada unidade são criados.

Outro artefato gerado são as fixtures, ou acessório, em uma tradução grosseira. As

fixtures são arquivos no formato YAML (http://yaml.org/), uma linguagem simples

para serialização de dados, que será inserido no banco de dados antes de executar os

testes unitários. Eles são úteis para podermos testar consultas ou para construir um

cenário em que um código deve ser executado para que tudo funcione (por exemplo,

para testar uma autenticação, é necessário que haja um usuário no banco de dados).

Rotas

Prosseguindo, a próxima modificação é no arquivo de rotas. O arquivo de rotas é

onde o Rails mapeia a URL da requisição à um controle que você escreve. Se você se

lembra bem, falamos na seção 3.2 que o Rails é bastante voltado à recursos, e agora

vemos bem isso olhando o arquivo routes.rb no diretório config:

resources :rooms

Essa linha é tudo o que você precisa dizer para ganhar as seguintes rotas:

GET /rooms - ação index - lista todos os quartos disponíveis;

GET /rooms/new - ação new - mostra uma página com um formulário para a

criação de novos quartos;

POST /rooms - ação create - cria um novo recurso na coleção de quartos;

93

4.4. Os arquivos gerados pelo scaffold

Casa do Código

GET /rooms/:id - ação show - exibe detalhes de um quarto cuja chave primá-

ria (famoso id) seja especificada na URL (id 123 para a URL /rooms/123, por

exemplo)

GET /rooms/:id/edit - ação edit - exibe o formulário para a edição de um

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке