Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
80 lines (61 sloc) 2.82 KB

Rake tasks to run tests, cucmber features or specs in parallel, to use multiple CPUs and speedup test runtime. more documentation and great illustrations


script/plugin install git://

Add <%= ENV['TEST_ENV_NUMBER'] %> to the database name for the test environment in config/database.yml,
it is '' for process 1, and '2' for process 2.

  adapter: mysql
  database: xxx_test<%= ENV['TEST_ENV_NUMBER'] %>
  username: root

Create the databases mysql -u root create database xxx_test; #should normally exist... create database xxx_test2; ...

Run like hell :D rake parallel:prepare[2] #db:reset for 2 databases

rake parallel:spec[1] --> 1 cpu  --> 86 seconds
#OR for Test::Unit
rake parallel:test[1]
#OR for Cucumber
rake parallel:features[1]

rake parallel:spec    --> 2 cpus --> 47 seconds
rake parallel:spec[4] --> 4 cpus --> 26 seconds

Just some subfolders please (e.g. set up one integration server to check each subfolder) rake parallel:spec[2,models] rake parallel:test[2,something/else]

partial paths are OK too...
rake parallel:test[2,functional] == rake parallel:test[2,fun]

Example output

2 processes for 210 specs, ~ 105 specs per process
... test output ...

877 examples, 0 failures, 11 pending
843 examples, 0 failures, 1 pending

Took 29.925333 seconds


  • 'script/spec_server' or spork do not work in parallel
  • ./script/generate rspec if you are running rspec from gems (this plugin uses script/spec which may fail if rspec files are outdated)
  • with zsh this would be rake "parallel:prepare[3]"


  • add gem + cli interface parallel_specs + parallel_tests + parallel_features -> non-rails projects
  • build parallel:bootstrap idea/basics
  • make jRuby compatible basics
  • make windows compatible (does anyone care ?)


inspired by pivotal labs

###Contributors (alphabetical)

Michael Grosser
Hereby placed under public domain, do what you want, just do not hold me accountable...