Migração Rails permite que você use Ruby para definir mudanças em seu esquema de banco de dados, tornando possível a utilização de um sistema de controle de versão para manter as coisas sincronizadas com o código real.

Isto tem muitas utilizações, incluindo:

Equipes de desenvolvedores - se uma pessoa faz uma alteração de esquema, os outros desenvolvedores só precisam atualizar e executar "migrate rake".

Servidores de produção - run "ancinho migrar" quando você lançar uma nova versão para trazer o banco de dados atualizado também.

Várias máquinas
- se desenvolver tanto em um desktop e um laptop, ou em mais de um local, as migrações podem ajudar a mantê-los todos sincronizados.


O que pode Migração Rails fazer?



  • create_table(name, options)
  • 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)


Migrações suportar todos os tipos de dados básicos: cordas, texto, inteiro, float, data e hora, data e hora, hora, data binários, e boolean:

string - é para tipos de dados pequenos, como um título.

text - é para mais pedaços de dados textuais, tais como a descrição.

integer - é para números inteiros.

float - é para decimais.

datetime e timestamp - armazenar a data e hora em uma coluna.

date and time - loja ou apenas a data ou a hora apenas.

binary - é para armazenamento de dados, tais como imagens, áudio, ou filmes.

boolean - é para armazenar valores verdadeiro ou falso.

Opções de coluna válidos são:





  • imit ( :limit => “50” )
  • default (:default => “blah” )
  • null (:null => false implies NOT NULL)


NOTA: As atividades realizadas pela migração Rails pode ser feito usando qualquer front-end GUI ou direto no SQL pronto, mas Migração Rails faz todas essas atividades muito fácil.

ver o Rails API para obter detalhes sobre estes.

Criar as migrações:

Aqui está a sintaxe genérica para a criação de uma migração:

Código:

C:\ruby\application> ruby script/generate migration table_name


Isto irá criar o db/migrate/001_table_name.rb arquivo. Um arquivo de migração contém sintaxe do Ruby básica que descreve a estrutura de dados de uma tabela do banco de dados.

NOTA: Antes de executar o gerador de migração, a sua recomendado para limpar migrações existentes gerados por geradores modelo.

Vamos criar duas migrações correspondentes aos nossos três livros mesas e assuntos.

Código:

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 minúsculas para o livro e assunto e usando a forma plural, criando migrações. Este é um paradigma Rails que você deve seguir sempre que criar uma migração.

Editar o código para dizer o que fazer:

Vá em db / migrate subdiretório de sua aplicação e editar cada um arquivo a um, usando qualquer editor de texto simples.
Modificar 001_books.rb como se segue: A coluna ID será criado automaticamente, por isso não fazê-lo aqui também.


Código:

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 self.up método é usado quando a migração para uma nova versão, self.down é usado para reverter as alterações, se necessário. Neste momento acima script será usado para criar a tabela livros.

Modificar 002_subjects.rb como se segue:

Código:

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


Script acima será usado para criar a tabela de assuntos e vai criar cinco registros na tabela de assuntos.
Executar a migração:

Agora 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 depois de rake tipo migrar comando da seguinte maneira:

Código:


C:\ruby\library> rake db:migrate


sua vontade, criar uma tabela "schema_info" se não existe, que acompanha a versão atual do banco de dados - cada nova migração será uma versão nova, e quaisquer novas migrações será executado até que o seu banco de dados é a versão atual.

Rake é um Ruby programa de construção similar ao Unix fazer programa que o Rails aproveita de simplificar a execução de tarefas complexas como a atualização de uma estrutura de banco de dados etc
Correndo migrações para bancos de dados de produção e teste:

Se você gostaria de especificar o que trilhos ambiente para usar para a migração, use a variável shell RAILS_ENV.

Por exemplo:

Código:

C:\ruby\library> set RAILS_ENV=production
C:\ruby\library> rake db:migrate


Código:

C:\ruby\library> set RAILS_ENV=test
C:\ruby\library> rake db:migrate

Código:


C:\ruby\library> set RAILS_ENV=development

C:\ruby\library> rake db:migrate

NOTA: No Unix, use "exportação RAILS_ENV produção =" em vez de comando definido.

Spoiler :