ハレノヒブログ

複数のRailsアプリで同じDBを使う場合にschema_migrationsを分ける方法

2014年8月25日

複数のRailsアプリで同じDBに接続する場合DBのマイグレーション履歴が同じschema_migrationsテーブルに格納されるのはちょっとこわい。

でもschema_migrationsって名前はRailsが決めているものだからどうやって変更するの?というのを調べたら接頭辞を使えばいいみたいで

# config/application.rb
module SampleApp
  class Application < Rails::Application
    ...
    config.active_record.table_name_prefix = 'sample_'
  end
end

上記のようにやっておくとアプリ全体のテーブル名にsample_が付くようになって、問題の箇所はsample_schema_migrationsというテーブル名になります。

ちなみにAdminユーザーテーブルを共有して同じアカウントでログイン出来るようにする場合は、sample_接頭辞をつけている側で

# app/models/admin.rb
class Admin < ActiveRecord::Base
  self.table_name_prefix = ''
end

というように個別モデル毎に接頭辞をなくしてあげることも出来るので複数アプリで同じテーブルを参照できますね。

ちなみにDeviseを使っているのでconfig/initializers/devise.rbでconfig.secret_keyを合わせてあげないとログインできませんでした。

多分複数アプリでschema_migrationsを共有しても問題なくて、rake db:migrate:statusすると存在しないmigrationの部分は ********** NO FILE ********** と表示されるだけなんだけどね。

最新記事

ruby-on-rails

Railsで複数のasset_hostを動的に切り替える方法

8月26日
ruby-on-rails

複数のRailsアプリで同じDBを使う場合にschema_migrationsを分ける方法

8月25日
staart-blogtitle

[Staart]ランキング機能を追加しました!

6月26日
staart-blogtitle

[Staart] スマホでライブの一覧が見やすくなりました

6月19日
staart-blogtitle

[Staart] 新しい検索バーをリリースしました!

6月18日
staart-blogtitle

[Staart] お問い合わせ方法とアイコン小話

6月13日
staart-blogtitle

[Staart] UI小話と更新情報

6月12日
staart-blogtitle

[Staart] ピックアップバナーエリアを追加しました!

6月11日
staart-blogtitle

新音楽サービスStaartはこんなサービスです!

6月10日
IMG_5313

新音楽サービスStaart(スターート)をリリースしました!

5月28日

月別アーカイブ