Учебники

Ruby on Rails 2.1 — Миграции

Rails Migration использует Ruby для определения изменений в вашей схеме базы данных, что позволяет использовать систему контроля версий, чтобы синхронизировать вещи с реальным кодом.

Он имеет много применений, таких как —

  • Команды разработчиков — если один человек вносит изменения в схему, другим разработчикам просто нужно обновить и запустить «rake migrate».

  • Производственные серверы — запускайте «rake migrate», когда вы выпускаете новую версию, чтобы обновить базу данных.

  • Несколько машин — если вы работаете как на настольном компьютере, так и на ноутбуке, или в нескольких местах, миграция может помочь вам синхронизировать их все.

Команды разработчиков — если один человек вносит изменения в схему, другим разработчикам просто нужно обновить и запустить «rake migrate».

Производственные серверы — запускайте «rake migrate», когда вы выпускаете новую версию, чтобы обновить базу данных.

Несколько машин — если вы работаете как на настольном компьютере, так и на ноутбуке, или в нескольких местах, миграция может помочь вам синхронизировать их все.

Что может сделать Rails Migration?

  • create_table (имя, параметры)

  • drop_table (имя)

  • rename_table (old_name, new_name)

  • add_column (имя_таблицы, имя_столбца, тип, параметры)

  • переименовать_колонку (имя_таблицы, имя_столбца, имя_столбца_нов)

  • change_column (имя_таблицы, имя_столбца, тип, параметры)

  • remove_column (имя_таблицы, имя_столбца)

  • add_index (имя_таблицы, имя_столбца, тип_индекса)

  • remove_index (имя_таблицы, имя_столбца)

create_table (имя, параметры)

drop_table (имя)

rename_table (old_name, new_name)

add_column (имя_таблицы, имя_столбца, тип, параметры)

переименовать_колонку (имя_таблицы, имя_столбца, имя_столбца_нов)

change_column (имя_таблицы, имя_столбца, тип, параметры)

remove_column (имя_таблицы, имя_столбца)

add_index (имя_таблицы, имя_столбца, тип_индекса)

remove_index (имя_таблицы, имя_столбца)

Миграции поддерживают все основные типы данных — строковые, текстовые, целочисленные, с плавающей запятой, дату-время, временную метку, время, дату, двоичные и логические значения —

  • строка — для небольших типов данных, таких как заголовок.

  • Текст — для более длинных фрагментов текстовых данных, таких как описание.

  • Текст — для более длинных фрагментов текстовых данных, таких как описание.

  • целое число — для целых чисел.

  • float — для десятичных дробей.

  • date-time and timestamp — сохраняет дату и время в столбце.

  • дата и время — сохраняет только дату или только время.

  • двоичный файл — для хранения данных, таких как изображения, аудио или фильмы.

  • логическое значение — для хранения значений true или false.

строка — для небольших типов данных, таких как заголовок.

Текст — для более длинных фрагментов текстовых данных, таких как описание.

Текст — для более длинных фрагментов текстовых данных, таких как описание.

целое число — для целых чисел.

float — для десятичных дробей.

date-time and timestamp — сохраняет дату и время в столбце.

дата и время — сохраняет только дату или только время.

двоичный файл — для хранения данных, таких как изображения, аудио или фильмы.

логическое значение — для хранения значений true или false.

Допустимые параметры столбца —

  • предел (: предел => «50»)

  • по умолчанию (: default => «бла»)

  • null (: null => false подразумевает, что NOT NULL )

предел (: предел => «50»)

по умолчанию (: default => «бла»)

null (: null => false подразумевает, что NOT NULL )

ПРИМЕЧАНИЕ. — Действия, выполняемые Rails Migration, можно выполнять с помощью любого интерфейсного интерфейса или напрямую по приглашению SQL, но Rails Migration делает все эти действия очень простыми.

Смотрите Rails API для подробностей об этом.

Создать Миграции

Вот общий синтаксис для создания миграции:

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

Это создаст файл db / migrate / 001_table_name.rb. Файл миграции содержит базовый синтаксис Ruby, который описывает структуру данных таблицы базы данных.

ПРИМЕЧАНИЕ. — Перед запуском генератора миграции рекомендуется очистить существующие миграции, сгенерированные генераторами моделей.

Мы создадим две миграции, соответствующие нашим трем таблицам — книги и предметы. ,

C:\ruby> cd library
C:\ruby\library> ruby script/generate migration books
C:\ruby\library> ruby script/generate migration subjects

Обратите внимание, что вы используете строчную букву для книги и темы и используете форму множественного числа при создании миграций. Это парадигма Rails, которой вы должны следовать каждый раз, когда создаете миграцию.

Изменить код, чтобы сказать, что делать

Перейдите в подкаталог db / migrate своего приложения и отредактируйте каждый файл один за другим, используя любой простой текстовый редактор.

Измените 001_books.rb следующим образом —

Столбец ID будет создан автоматически, поэтому не делайте этого и здесь.

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

Метод self.up используется при переходе на новую версию, self.down используется для отката любых изменений, если это необходимо. В данный момент вышеуказанный скрипт будет использоваться для создания таблицы книг .

Измените 002_subjects.rb следующим образом —

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

Приведенный выше скрипт будет использоваться для создания таблицы предметов ; это создаст пять записей в таблице предметов.

Запустите миграцию

Теперь, когда вы создали все необходимые файлы миграции, пришло время выполнить их для базы данных. Для этого перейдите в командную строку и откройте каталог библиотеки, в котором находится приложение, а затем введите rake migrate следующим образом:

C:\ruby\library> rake db:migrate

Это создаст таблицу «schema_info», если она не существует, которая отслеживает текущую версию базы данных. Каждая новая миграция будет новой версией, и любые новые миграции будут выполняться до тех пор, пока ваша база данных не достигнет текущей версии.

Rake — это программа сборки Ruby, похожая на Unix make, которую использует Rails для упрощения выполнения сложных задач, таких как обновление структуры базы данных и т. Д.

Запуск миграций для производственных и тестовых баз данных

Если вы хотите указать, какую среду rails использовать для миграции, используйте переменную оболочки RAILS_ENV.

Например —

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

ПРИМЕЧАНИЕ. — В Unix вместо команды set используйте «export RAILS_ENV = production».

Что дальше?

Теперь у нас есть база данных и необходимые таблицы. В двух последующих главах мы рассмотрим два важных компонента: Контроллер (ActionController) и Вид (ActionView).