Guard::Spork
Guard::Spork allows to automatically & intelligently start/reload your RSpec/Cucumber/Test::Unit Spork server(s).
- Compatible with Spork 0.8.4 & 0.9.0.rcX.
- Tested against Ruby 1.9.3, 2.0.0, 2.1.2, and JRuby.
Install
Please be sure to have Guard installed before continuing.
Install the gem:
$ gem install guard-spork
Add it to your Gemfile (inside development group):
group :development do
gem 'guard-spork'
end
Add guard definition to your Guardfile with:
$ guard init spork
Usage
Please read the Guard usage documentation.
Guardfile
Please read Guard doc for more info about the Guardfile DSL.
IMPORTANT: place Spork guard before RSpec/Cucumber/Test::Unit guards!
Rails app
guard 'spork' do
watch('config/application.rb')
watch('config/environment.rb')
watch(%r{^config/environments/.*\.rb$})
watch(%r{^config/initializers/.*\.rb$})
watch('Gemfile.lock')
watch('spec/spec_helper.rb') { :rspec }
watch('test/test_helper.rb') { :test_unit }
watch(%r{features/support/}) { :cucumber }
end
Running specs over Spork
Pass the :cmd => "rspec --drb"
option to Guard::RSpec and/or Guard::Cucumber to run them over the Spork DRb server:
guard 'rspec', :cmd => "rspec --drb" do
end
guard 'cucumber', :cmd => "rspec --drb" do
end
For MiniTest Guard you should pass the :drb => true
option:
guard 'minitest', :drb => true do
end
Options
Guard::Spork automatically detect RSpec/Cucumber/Test::Unit/Bundler presence but you can disable any of them with the corresponding options:
guard 'spork', :rspec => false, :cucumber => false, :test_unit => false, :bundler => false do
end
You can provide additional environment variables for RSpec, Cucumber, and Test::Unit with the :rspec_env, :cucumber_env, and :test_unit_env options:
guard 'spork', :cucumber_env => { 'RAILS_ENV' => 'cucumber' }, :rspec_env => { 'RAILS_ENV' => 'test' }, :test_unit_env => { 'RAILS_ENV' => 'test' } do
end
If your application runs on Heroku or otherwise uses Foreman, you can provide the :foreman => true
option to have environment variables present in the .env
file passed on to the Spork server.
Available options:
:wait => 60
:retry_delay => 60
:cucumber => false
:rspec => false
:test_unit => false
:minitest => false
:bundler => false
:test_unit_port => 1233
:rspec_port => 1234
:cucumber_port => 4321
:test_unit_env => { 'RAILS_ENV' => 'baz' }
:rspec_env => { 'RAILS_ENV' => 'foo' }
:cucumber_env => { 'RAILS_ENV' => 'bar' }
:aggressive_kill => false
:notify_on_start => true
:foreman => true
:quiet => true
Common troubleshooting
If you can start Spork manually but get the following error message when using Guard::Spork:
Starting Spork for RSpec ERROR: Could not start Spork for RSpec/Cucumber. Make sure you can use it manually first.
Try to increase the value of the :wait => 60
option before any further investigation.
It's possible that this error is the result of an unnecessary /test directory in the root of your application. Removing the /test directory entirely may resolve this error.
Development
Pull requests are very welcome! Please try to follow these simple "rules", though:
- Please create a topic branch for every separate change you make.
- Make sure your patches are well tested.
- Update the README (if applicable).
- Please do not change the version number.
For questions please join us on our Google group or on #guard
(irc.freenode.net).
Author
Thibaud Guillaume-Gentil