shimgo
3/13/2017 - 2:48 PM

capybaraのWebドライバでSeleniumを使う場合にDBのクリーンアップに失敗する

capybaraのWebドライバでSeleniumを使う場合にDBのクリーンアップに失敗する

capybaraのWebドライバでSeleniumを使う場合以下のモンキーパッチをActiveRecordに当てる必要がある。
これがないとDBのトランザクションが別セッションになってしまいテストのクリーンアップが失敗する場合がある。
詳しくはEveryday Rails 8章の「JavaScriptを利用するやりとりを含める」を参照。

class ActiveRecord::Base
  mattr_accessor :shared_connection
  @@shared_connection = nil

  def self.connection
    @@shared_connection || retrieve_connection
  end
end
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection