railsのMigrationで「ルックアップテーブル、定義済みのユーザなど、本番環境にもロードしたいデータをロードするためのマイグレ」を作成する。 メモ

#{RAILS_ROOT}/db/migrate/001_create_system.rb

require "migration_helpers"

class CreateSystem < ActiveRecord::Migration
  extend MigrationHelpers
  def self.up
    create_table :system, create_tbl_option do |t|
        t.column :cd, :string
        t.column :name, :string
    end
    add_index(:system, :cd, :unique => true )
  end

  def self.down
    drop_table :system
  end
end

#{RAILS_ROOT}/db/migrate/002_load_init_data.rb

require "migration_helpers"

class LoadInitData < ActiveRecord::Migration
  extend MigrationHelpers
  def self.up
    down
    data_load("system")
  end
  def self.down
#    data_clear("system")
  end
end

#{RAILS_ROOT}/lib/migration_helpers.rb

require 'active_record/fixtures'

module MigrationHelpers
  def create_tbl_option
    options = {
#     :options => "ENGINE=InnoDB DEFAULT CHARSET=utf8", # mysql option
      :force => true
    }
  end

  def data_load(file)
    dir = "#{RAILS_ROOT}/db/migrate/init_data"
    Fixtures.create_fixtures(dir, file)
  end
end

#{RAILS_ROOT}/db/migrate/init_data/system.yml

system_00001: 
  id: 1
  cd: test
  name: "テスト"