Ruby on Rails - Migrações
O Rails Migration permite que você use Ruby para definir mudanças em seu esquema de banco de dados, tornando possível usar um sistema de controle de versão para manter as coisas sincronizadas com o código real.
Isso tem muitos usos, incluindo -
Teams of developers - Se uma pessoa fizer uma alteração de esquema, os outros desenvolvedores precisam apenas atualizar e executar "rake migrate".
Production servers - Execute "rake migrate" ao lançar uma nova versão para atualizar o banco de dados.
Multiple machines - 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 a migração Rails pode fazer?
- criar_tabela (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 - A seguir está a lista de tipos de dados que a migração suporta -
string - para pequenos tipos de dados, como um título.
text - para partes mais longas de dados textuais, como a descrição.
integer - para números inteiros.
float - para decimais.
datetime and timestamp - armazene a data e a hora em uma coluna.
date and time - armazene apenas a data ou apenas a hora.
binary - para armazenar dados como imagens, áudio ou filmes.
Boolean - para armazenar valores verdadeiros ou falsos.
Valid column options are - A seguir está a lista de opções de coluna válidas.
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 diretamente 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 -
application_dir> rails generate migration table_name
Isso criará o arquivo db / migrate / 001_table_name.rb. Um arquivo de migração contém a sintaxe básica do Ruby que descreve a estrutura de dados de uma tabela de banco de dados.
NOTE - Antes de executar o gerador de migração, é recomendável limpar as migrações existentes geradas por geradores de modelo.
Vamos criar duas migrações correspondentes às nossas três tabelas - books and subjects.
A migração de livros deve ser a seguinte -
tp> cd library
library> rails generate migration books
O comando acima gera o seguinte código.
a migração de assunto deve ser a seguinte -
tp> cd library
library> rails generate migration subjects
O comando acima gera o seguinte código.
Observe que você está usando minúsculas para livro e assunto e forma plural ao criar migrações. Este é um paradigma Rails que você deve seguir sempre que criar uma migração.
Edite o código
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.column :title, :string, :limit => 32, :null => false
t.column :price, :float
t.column :subject_id, :integer
t.column :description, :text
t.column :created_at, :timestamp
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 criarbooks mesa.
Modifique 002_subjects.rb da seguinte maneira -
class Subjects < ActiveRecord::Migration
def self.up
create_table :subjects do |t|
t.column :name, :string
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 subjects tabela e 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 um prompt de comando e vá para o diretório da biblioteca em que o aplicativo está localizado e digiterake migrate como segue -
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 make do Unix do qual Rails tira vantagem, 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 -
library> export RAILS_ENV = production
library> rake db:migrate
library> export RAILS_ENV = test
library> rake db:migrate
library> export RAILS_ENV = development
library> rake db:migrate
NOTE- No Windows, use "set RAILS_ENV = production" em vez do comando export .
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).
- Criando visualizações (visualização de ação).