Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

A DRb server for testing frameworks (RSpec / Cucumber currently) that forks before each run to ensure a clean testing state.

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 assets
Octocat-spinner-32 bin
Octocat-spinner-32 ext
Octocat-spinner-32 features
Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 .gitignore
Octocat-spinner-32 Gemfile
Octocat-spinner-32 Gemfile.lock
Octocat-spinner-32 History.txt
Octocat-spinner-32 MIT-LICENSE
Octocat-spinner-32 README.rdoc
Octocat-spinner-32 Rakefile
Octocat-spinner-32 spork.gemspec



Spork is Tim Harper's implementation of test server (similar to the script/spec_server that used to be provided by rspec-rails), except rather than using the Rails constant unloading to reload your files, it forks a copy of the server each time you run your tests. The result? Spork runs more solid: it doesn't get corrupted over time, and it properly handles modules and any voodoo meta programming you may have put in your app.

Spork runs on POSIX systems using fork. It also runs on windows by pre-populating a pool of ready processes (referred to here as the “magazine” strategy).

Supported Testing Frameworks

  • Rspec

  • Cucumber

  • Test::Unit (via 'gem install spork-testunit')

And more to come! Vote for your favorite at

Supported Application Frameworks

Actually, Spork ~can~ work with any application framework. But, it ships with hooks and helpers to make an “out of the box” experience.

  • Rails 3.0 (for Rails 2.{1,2,3}.x, please try spork 0.8.x)

  • Padrino



[sudo] gem install spork


Add to your Gemfile:

gem "spork"


From a terminal, change to your project directory.

Then, bootstrap your spec/spec_helper.rb file.

spork --bootstrap

Next, edit spec/spec_helper.rb and follow the instructions that were put at the top.

Finally, run spork. A spec DRb server will be running!


Diagnostic mode

Initially, you may find that a few files don't reload automatically. This is because they are being loaded during Spork startup. To identify which project files are being pre-loaded, and why, run:

spork --diagnose
(or spork -d, for short)

It will output a lot of stuff. At the top you'll find a summary of all project files loaded. Down below, the stack trace for each file (how it got loaded). Spork hooks into Rails and does some magic (TM) to prevent ApplicationController observers, etc from pre-loading. Similar hooks for other ruby frameworks may come as support demands.

Running specs over Spork


To get the TextMate RSpec bundle to use spork, go to config->advanced->shell variables, and add:


To run from the command line, use:

rspec --drb spec/lib/my_spec.rb

Or, you could add the following flag to your spec.opts file.



Cucumber has DRb support (see )

cucumber --drb

Use this as a guideline when “Sporking” your features/support/env.rb file

Running the Spork test suite

If you wish to hack on spork, you will want to run the automated test suite to make sure your changes don't break anything. Spork uses bundler to manage and install dependencies. To start:

bundle install

Then, to run the specs:

bundle exec rspec spec/

(or, alternatively…)

bundle exec rake

running features ===


bundle exec cucumber features

Some potential issues and ways to overcome them:


Kudos to

  • Ben Mabey - help with documentation, testing, suggestions, patches, and bringing Cucumber support.

  • David Chelimsky - for the fine RSpec testing framework, and the original rspec-rails spec_server implementation, which Spork has built upon.

  • LeadTune - just for being an awesome place to work.

Spork © 2010 Tim Harper, released under the MIT license

Something went wrong with that request. Please try again.