Parallel spec runner for RSpec 3.
$ gem install parallel-rspec
Getting Started / Usage
parallel-rspec binary which can be used directly:
$ parallel-rspec spec
If spec/parallel_spec_helper.rb is found, the
parallel-rspec command loads it before starting the test. Since parallel-rspec uses fork(2) to spawn off workers, you must ensure each worker runs in an isolated environment. Use the
after_fork hook to reset any global state.
RSpec::Parallel.configure do |config| config.after_fork do |worker| # Use separate database. ActiveRecord::Base.configurations["test"]["database"] << worker.number.to_s ActiveRecord::Base.establish_connection(:test) end end
In this case, your workers assume sequence of databases exist and has right schema already. Rspec-parallel ships with
db:test:prepare_sequential rake task to prepare them for your Rails application:
$ rake db:test:prepare_sequential
The number of workers spawned by parallel-rspec is the number of available CPU cores by default. To controll the concurrency, use
concurrency configuration option:
RSpec::Parallel.configure do |config| config.concurrency = 4 end
db:test:prepare_sequential task takes concurrency as an argument.
$ rake "db:test:prepare_sequential"