読者です 読者をやめる 読者になる 読者になる

PerlerのRuby日記

Rubyとか

Railsで2個めのDBを作ってマイグレーションする

Ruby on Rails使ってて、どうしても2個めのDBを作る必要があったのでメモ。

Railsのバージョンは4.0.0。

アプリ名は「Sakura」。

  • (1個目マイグレファイル)db/migrate/*

に加えて

  • (2個目DB名)sakura_second
  • (2個目マイグレファイル)db/second_migrate/*

としたい。

config/database.ymlに2個目の情報をかく

--- config/database.yml.org     2013-09-04 21:48:05.000000000 +0900
+++ config/database.yml 2013-09-04 21:48:54.000000000 +0900
@@ -37,3 +37,13 @@
   username: root
   password:
   socket: /tmp/mysql.sock
+
+# The second DB
+sakura2:
+  adapter: mysql2
+  encoding: utf8
+  database: sakura_second
+  pool: 5
+  username: root
+  password:
+  socket: /tmp/mysql.sock

テストとか開発用とか必要なら追加する。


config/environments/sakura2.rbを作る

config/database.ymlに"sakura2"を追加したので、RAILS_ENVの候補となるように、

config/environments/sakura2.rbを新規作成する。

その中でmigrationファイルを置くpathを変更する。

config/environments/sakura2.rb
Sakura::Application.configure do
  config.paths['db/migrate'] = ['db/second_migrate']
end

db/second_migrate/にマイグレファイルを作る

db/second_migrate/20130904121339_create_inveders.rb
class CreateInveders < ActiveRecord::Migration
  def change
    create_table :inveders do |t|
      t.string :name
      t.integer :age
    end
  end
end

2個目のDBをrakeで作る

$ bundle exec rake db:create RAILS_ENV=sakura2

2個目のDBにマイグレ

$ bundle exec rake db:migrate RAILS_ENV=sakura2

RAILS_ENVでマイグレ対象を切り替えられるようになった。