Ruby on Rails 2.1 - Migrações
O Rails Migration usa Ruby para definir mudanças no esquema do seu banco de dados, tornando possível usar um sistema de controle de versão para manter as coisas sincronizadas com o código real.
Tem muitos usos, como -
Equipes de desenvolvedores - se uma pessoa faz uma alteração de esquema, os outros desenvolvedores precisam apenas atualizar e executar "rake migrate".
Servidores de produção - execute "rake migrate" ao lançar uma nova versão para atualizar também o banco de dados.
Múltiplas máquinas - se você desenvolve em um desktop e em um laptop, ou em mais de um local, as migrações podem ajudá-lo a mantê-los todos sincronizados.
O que o Rails Migration pode fazer?
create_table (nome, opções)
drop_table(name)
rename_table (old_name, new_name)
add_column (table_name, column_name, type, options)
rename_column (table_name, column_name, new_column_name)
change_column (table_name, column_name, type, options)
remove_column (table_name, column_name)
add_index (table_name, column_name, index_type)
remove_index (table_name, column_name)
Migrations support all the basic data types - string, texto, inteiro, flutuante, data-hora, carimbo de data / hora, hora, data, binário e booleano -
string - destina-se a pequenos tipos de dados, como um título.
text - destina-se a partes mais longas de dados textuais, como a descrição.
text - destina-se a partes mais longas de dados textuais, como a descrição.
integer - é para números inteiros.
float - é para decimais.
date-time and timestamp - armazena a data e a hora em uma coluna.
date and time - armazena apenas a data ou apenas a hora.
binary - serve para armazenar dados como imagens, áudio ou filmes.
boolean - serve para armazenar valores verdadeiros ou falsos.
As opções de coluna válidas são -
limit (: limite => “50”)
default (: padrão => “blá”)
null(: nulo => falso implica NÃO NULO )
NOTE - As atividades feitas pelo Rails Migration podem ser feitas usando qualquer interface de usuário front-end ou direto no prompt SQL, mas o Rails Migration torna todas essas atividades muito fáceis
Veja a API Rails para detalhes sobre isso.
Crie as migrações
Aqui está a sintaxe genérica para criar uma migração -
C:\ruby\application> ruby script/generate migration table_name
Isso criará o arquivo db / migrate / 001_table_name.rb. Um arquivo de migração contém sintaxe Ruby básica que descreve a estrutura de dados de uma tabela de banco de dados.
NOTE - Antes de executar o gerador de migração, é recomendado limpar as migrações existentes geradas por geradores de modelo.
Vamos criar duas migrações correspondentes às nossas três tabelas - books and subjects..
C:\ruby> cd library
C:\ruby\library> ruby script/generate migration books
C:\ruby\library> ruby script/generate migration subjects
Observe que você está usando letras minúsculas para livro e assunto e usando a forma plural ao criar migrações. Este é um paradigma Rails que você deve seguir sempre que criar uma migração. -
Edite o código para dizer o que fazer
Vá para o subdiretório db / migrate de seu aplicativo e edite cada arquivo um por um usando qualquer editor de texto simples.
Modifique 001_books.rb da seguinte forma -
A coluna ID será criada automaticamente, então não faça isso aqui também.
class Books < ActiveRecord::Migration
def self.up
create_table :books do |t|
t.string :title, :limit => 32, :null => false
t.float :price
t.integer :subject_id
t.text :description
t.timestamp :created_at
end
end
def self.down
drop_table :books
end
end
O método self.up é usado ao migrar para uma nova versão, self.downé usado para reverter quaisquer alterações, se necessário. Neste momento, o script acima será usado para criar obooks mesa.
Modifique 002_subjects.rb da seguinte maneira -
class Subjects < ActiveRecord::Migration
def self.up
create_table :subjects do |t|
t.string :name
end
Subject.create :name => "Physics"
Subject.create :name =>"Mathematics"
Subject.create :name => "Chemistry"
Subject.create :name => "Psychology"
Subject.create :name => "Geography"
end
def self.down
drop_table :subjects
end
end
O script acima será usado para criar subjectsmesa; ele criará cinco registros na tabela de assuntos.
Execute a migração
Agora que você criou todos os arquivos de migração necessários, é hora de executá-los no banco de dados. Para fazer isso, vá para o prompt de comando e abra o diretório da biblioteca em que o aplicativo está localizado e digiterake migrate como segue -
C:\ruby\library> rake db:migrate
Isso criará uma tabela "schema_info" se ela não existir, que rastreia a versão atual do banco de dados. Cada nova migração será uma nova versão, e todas as novas migrações serão executadas até que seu banco de dados esteja na versão atual.
Rake é um programa de construção Ruby semelhante ao programa de criação do Unix do qual o Rails se aproveita, para simplificar a execução de tarefas complexas, como atualizar a estrutura de um banco de dados etc.
Execução de migrações para bancos de dados de produção e teste
Se você gostaria de especificar qual ambiente Rails usar para a migração, use a variável shell RAILS_ENV.
Por exemplo -
C:\ruby\library> set RAILS_ENV=production
C:\ruby\library> rake db:migrate
C:\ruby\library> set RAILS_ENV=test
C:\ruby\library> rake db:migrate
C:\ruby\library> set RAILS_ENV=development
C:\ruby\library> rake db:migrate
NOTE- No Unix, use "export RAILS_ENV = production" em vez do comando set .
O que vem a seguir?
Agora temos nosso banco de dados e as tabelas necessárias disponíveis. Nos dois capítulos subsequentes, exploraremos dois componentes importantes chamados Controller (ActionController) e View (ActionView).
- Criando controladores (controlador de ação)
- Criação de visualizações (visualização de ação)