ActiveRecord::Base.establishによる複数回切り替え時の不具合
掲題の件、テスト書いていることで発見できまして、APIリファレンスを読むと割と合点はいきましたが 間違えなどあれば、指摘いただきたいです。
環境 - rails 5.0.0.1(puma) - ruby 2.3.1
ActiveRecord::Base.establish
を何度も読み出すことで、query
を発行した際に事前に切り替えたDBではなく
切り替え前のDBのままquery
を実行する不具合がテストで見つかりましてその改善策です。
def change_schema ApplicationRecord.remove_connection ActiveRecord::Base.establish YAML.load_file(Rails.root.join('config', 'database.yml')[Rails.env] end
clear_all_connection!
などを実行しても、上手くリセットされていなかったので、remove_connection
からconnection
をdisconnect
で切断してから
動作するようになりました。
テストは恩恵も大きいし、テストを定常的に書くのも重要ですね。