LoginSignup
8
9

More than 5 years have passed since last update.

Guardfileのサンプル

Last updated at Posted at 2012-10-14

Guardの設定、Guardfileを書き直すのに苦労したので、ここにメモしときます。

Sporkを使う場合、Sporkが読み込む設定を上に書いて、rspecが読み込む設定を下に書きます。この順番でないとうまくいきません。

参考: Railscasts

viewの変更を感知して、インテグレーションテストに使うrequestsが走るようにする。そしてmodelとcontrollerの変更をそれぞれ関知して、インテグレーションテストのrequestsとユニットテストのlibが走るように、Guardが見張る箇所の設定を加えました。

2012年10月14日追記

よく見たらCapybara request specsにviewsのインテグレーションテスト用設定書いてあるからその部分重複してますね……orz

Guardfile
# A sample Guardfile
# More info at https://github.com/guard/guard#readme
guard 'spork', :cucumber_env => { 'RAILS_ENV' => 'test' }, :rspec_env => { 'RAILS_ENV' => 'test' } do
  watch('config/application.rb')
  watch('config/environment.rb')
  watch('config/environments/test.rb')
  watch(%r{^config/initializers/.+\.rb$})
  watch('Gemfile')
  watch('Gemfile.lock')
  watch('spec/spec_helper.rb') { :rspec }
  watch('test/test_helper.rb') { :test_unit }
  watch(%r{features/support/}) { :cucumber }
end

guard 'rspec', :version => 2, :cli => "--drb" do
  watch(%r{^spec/.+_spec\.rb$})
  watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
  watch('spec/spec_helper.rb')  { "spec" }


#ここから、自分で書いた設定

  watch(%r{^app/views/(.+)/}) { |m| "spec/requests/#{m[1]}_spec.rb" }
  watch(%r{^app/models/(.+)/}) { |m| ["spec/lib/#{m[1]}_spec.rb", "spec/requests/#{m[1]}_spec.rb"] }
  watch(%r{^app/controllers/(.+)/}) { |m| ["spec/lib/#{m[1]}_spec.rb", "spec/requests/#{m[1]}_spec.rb"] }

#ここまで自分で書いた設定


  # Rails example
  watch(%r{^app/(.+)\.rb$})                           { |m| "spec/#{m[1]}_spec.rb" }
  watch(%r{^app/(.*)(\.erb|\.haml)$})                 { |m| "spec/#{m[1]}#{m[2]}_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('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" }

  # Turnip features and steps
  watch(%r{^spec/acceptance/(.+)\.feature$})
  watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$})   { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
end
8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9