2012-04-19 19 views
6

Trong Gemfile tôi ...Tại sao bắt đầu bảo vệ spork cả cho rspec và dưa chuột ngay cả khi tôi muốn bắt đầu nó chỉ cho rspec sử dụng các nhóm?

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 có hai nhóm (: thông số kỹ thuật và: tính năng).

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 

Khi tôi cố gắng chạy nhóm: specs, tôi hy vọng bảo vệ sẽ chạy Spork chỉ dành cho Rspec.

guard -g specs start 

Tuy nhiên, tôi có thể thấy từ đầu ra bảo vệ chạy Spork cho cả Rspec và 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 

Có tệp cấu hình nào cho SPORK hoặc bảo vệ mà tôi có thể đã bỏ lỡ không?

UPDATE:

  1. Di guard-dưa chuột

  2. Remove hoặc Rename tính năng thư mục

Trả lời

6

Bạn phải tắt dưa chuột trong Spork trong nhóm RSpec và ngược lại:

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

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

Tôi biết đó là cũ, nhưng tôi cũng vấp phải vấn đề này ngay bây giờ và figured it out:

Tôi đã có một thư mục con features trong dự án của tôi với một tập tin: features/step_definitions/email_steps.rb

Nhìn lên các cam kết tôi nhận ra rằng điều này đã được thêm vào từ rails_apps_composer: khung kiểm thử.

Vì vậy:

Loại bỏ các thư mục con features ngăn spork từ cố gắng sử dụng dưa chuột.

Các vấn đề liên quan