If you haven't tried zeus yet, you are missing out on some free speed. It is similar to spork but aims to be language agnostic. The main thing I find exciting about it is that it can be used to do things other than run tests such as loading consoles and running generators.

I like to write my integration tests with spinach, and this does not work out of the box with zeus. This post outlines how to get them working together - it's pretty simple.

What You Have to Do

Run zeus init to generates two zeus config files - custom_plan.rb and zeus.json.

Fill in custom_plan.rb with the following code:

require 'zeus/rails'

class CustomPlan < Zeus::Rails

  def spinach_environment
    require 'spinach'
  end

  def spinach
    spinach_main = Spinach::Cli.new(ARGV.dup)
    exit spinach_main.run
  end

end

Zeus.plan = CustomPlan.new

Replace cucumber with spinach in zeus.json so that zeus knows what to run on startup:

{
  "command": "ruby -rubygems -r./custom_plan -eZeus.go",

  "plan": {
    "boot": {
      "default_bundle": {
        "development_environment": {
          "prerake": {"rake": []},
          "runner": ["r"],
          "console": ["c"],
          "server": ["s"],
          "generate": ["g"],
          "destroy": ["d"],
          "dbconsole": []
        },
        "test_environment": {
          "spinach_environment": {"spinach": []},
          "test_helper": {"test": ["rspec", "testrb"]}
        }
      }
    }
  }

Dependencies Used

Both spinach and zeus are fairly new so this solution may not work with future versions of them. This works with:

Useful Resources: