RubyでCarrierWaveを使ったテストを並列化する際の注意
この設定をした状態でtest-queueでテストを並列化すると、幾つかのテストが「ファイルが存在しない」というエラーになってしまうことがある(並列化の常で、ランダムに起こる)。 1. ワーカー1がファイルを作成
2. ワーカー2が、割り当てられた全テストが終わったのでアップロードディレクトリーをさくzyo
3. ワーカー1が作ったファイルが消えているので、そのファイルを参照するテストが失敗する
ということになっている。
解決は単純で、CarrierWaveのウィキに書かれているのをちょっとだけ変えればいい。
code:spec_helper.rb.diff
RSpec.configure do |config|
# ...
- config.after(:all) do
+ config.after(:suite) do
# ...
end
end
describe(やcontext)の度に実行するのが:allで、一度の(コマンド等による)実行に一回実行するのが:suite。
参考: