Railsアプリケーションにおいて、マルチスレッド処理でレコード取得処理を行う処理を書くときに、Rspecの設定周りでいろいろと知ることができたのでメモ。 テスト環境は Rspec + FactoryGirl + DatabaseCleaner という感じ。 まず、テストの流れとして、 FactoryGirlなどからデータベースにデータが挿入される。これは一般的にTransactionで行われる。 そして、テストが終了するとTransactionはロールバックされてデータベースは元の状態に戻る。 しかし、マルチスレッドでレコード取得を行っていると、 テスト開始時にTransaction内でデータは挿入されるが、それぞれ別のスレッドからはTransaction内のデータを参照できないため、レコードの取得ができずに、テストは落ちることになる。 そこでrspecの設定でTransactionでの