以前 Qiita に書いたテストの並列化に関する続編もの。
Redis のインスタンス上で名前空間を使って、並列処理に対するリソース分割するのがリーズナブルなため、Gemfile に redis-namespace を使えるように指定する。
gem 'redis-namespace'
RSpec の場合は spec/spec_helper.rb に以下のような設定を書く。ここの例では、Rails.env
の値と parallel_tests を使った際にもちいられる環境変数 ENV['TEST_ENV_NUMBER']
の値を並列分用意する名前空間としている。
config.before(:suite) do redis = Redis.new(host: host, port: port) Redis.current = Redis::Namespace.new("#{Rails.env}#{ENV['TEST_ENV_NUMBER']}", redis: redis) end ... config.after do redis = Redis.new(host: Settings.redis.host, port: Settings.redis.port) Redis::Namespace.new("#{Rails.env}#{ENV['TEST_ENV_NUMBER']}", redis: redis).flushdb end
やり方はいろいろとあると思うので、よりよいアプローチを思いついたら手を加えて行きたい。