In my Gemfile...
group :development, :test do
gem 'capybara', "1.1.2"
gem 'database_cleaner', "0.7.0"
gem 'cucumber', "1.1.2"
gem 'cucumber-rails', "1.2.0"
gem 'rspec-rails', "2.7.0"
gem 'spork', "0.9.0.rc9"
gem 'launchy' #launches the page
gem 'guard-spork', "0.3.1"
gem 'guard-rspec', "0.5.4"
gem 'guard-cucumber', "0.7.4"
gem 'factory_girl_rails'
end
My Guardfile have two groups (:specs and :features).
group :specs do
guard :spork, :rspec_env => { 'RAILS_ENV' => 'test' } do
watch('config/application.rb')
watch('config/environment.rb')
watch(%r{^config/environments/.+\.rb$})
watch(%r{^config/initializers/.+\.rb$})
watch('spec/spec_helper.rb')
end
guard :rspec, :version => 2 do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }
# # Rails example
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
watch('spec/spec_helper.rb') { "spec" }
watch('config/routes.rb') { "spec/routing" }
watch('app/controllers/application_controller.rb') { "spec/controllers" }
# Capybara request specs
watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
end
end
group :features do
guard 'spork', :cucumber_env => { 'RAILS_ENV' => 'test' } do
watch('config/application.rb')
watch('config/environment.rb')
watch(%r{^config/environments/.+\.rb$})
watch(%r{^config/initializers/.+\.rb$})
watch('spec/spec_helper.rb')
end
guard 'cucumber' do
watch(%r{^features/.+\.feature$})
watch(%r{^features/support/.+$}) { 'features' }
watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
end
end
When I try to run the :specs group, I would expect guard to run Spork for Rspec only.
guard -g specs start
However, I can see from the output that guard runs Spork both for Rspec and Cucumber.
~/current[master]% guard -g specs start
WARNING: You are using Guard outside of Bundler, this is dangerous and may not work. Using `bundle exec guard` is safer.
Guard could not detect any of the supported notification libraries.
Guard is now watching at '/Users/rupert/Desktop/cws-rails'
Starting Spork for RSpec & Cucumber
Using RSpec
Using Cucumber
Preloading Rails environment
Preloading Rails environment
Loading Spork.prefork block...
Loading Spork.prefork block...
Spork is ready and listening on 8990!
Spork is ready and listening on 8989!
Spork server for RSpec & Cucumber successfully started
Guard::RSpec is running, with RSpec 2!
Running all specs
Is there any config file for SPORK or guard that I might have missed?
UPDATE:
Remove guard-cucumber
Remove or Rename features folder
You must disable Cucumber in Spork in the RSpec group and the other way around:
specs :specs
guard :spork, :cucumber => false do
# ...
end
end
specs :features
guard 'spork', :rspec => false do
# ...
end
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With