LoginSignup
1
1

More than 5 years have passed since last update.

DBが複数あるRailsアプリのschema:load

Posted at

諸般の事情で、一つのRailsアプリから複数のDBを参照することは偶にあると思います。

この手の場合、イカのような database.yml を書くといいという情報はさくっと出てきますよね。

development_myapp:
  <<: *default
  database: main_db
development_subapp:
  <<: *default
  database: sub_db

ここで、sub_db に依存したtest,specを書こうと思うと sub_db のschema:loadが実行できなくてこまっちゃう。
手元だったら、sub_dbを手作業で入れるとか回避策はありますが、CIツールに回そうと思うと、自動化が必要になってきます。

と言うわけで適当にRailsのコードを追ってたら出来たので晒しておきます。

lib/tasks/sub_db.rake
namespace :sub_db do
  namespace :schema do
    desc 'Load a sub_schema.rb file into the database'
    task :load do
      config = ActiveRecord::Base.configurations['test_subapp']

      fail 'database.yml内にtest_subの設定を追加してください。' if config.blank?

      ActiveRecord::Tasks::DatabaseTasks.load_schema_for(config, :ruby, "#{Rails.root}/db/sub_schema.rb")
    end
  end
end

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1