Почему guard запускает spork как для rspec, так и для cucumber, даже если я хотел запустить его только для RSpec с помощью групп?

в моем 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

мой Guardfile имеет две группы (: спецификации и: особенности).

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

когда я пытаюсь запустить группу: specs, я ожидаю, что guard будет запускать Spork только для Rspec.

guard -g specs start

тем не менее, я вижу на выходе, что guard запускает Spork как для Rspec, так и для 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

есть ли файл конфигурации для SPORK или guard, который у меня может быть промахнулся?

обновление:

  1. снять защиту-огурец

  2. удалить или переименовать папку функции

2 ответов


вы должны отключить огурец в Спорке в группе RSpec и наоборот:

specs :specs    
  guard :spork, :cucumber => false do
    # ...
  end
end

specs :features    
  guard 'spork', :rspec => false do
    # ...
  end
end

Я знаю, что это старый, но я также наткнулся на эту проблему прямо сейчас и выяснил:

Я features подкаталог в моем проекте с одним файлом: features/step_definitions/email_steps.rb

просматривая коммиты, я понял, что это было добавлено из rails_apps_composer: Testing framework.

так:

удаление поддиректории features предупреждает spork использовать огурец.