0

私はbundle exec guardメインのテスト ランナーとして使用しており、それについては完全に無関心ですが、気に入っています。

私を悩ませたのは、実際のコード変更のために手動で「r」を再起動する必要があることです。rails cリロード時間が遅いのは問題ありませんが (の動作のようになればいいのですreload!が)、手動でウィンドウに切り替えて を押さなければならないのは我慢できませんr。特にこれをするのを忘れて、それでいいと思っているとき。したがって、非効率性に加えて矛盾です。

ここに私のガードファイルがあります:

guard 'spork', wait: 45 do
  watch 'config/application.rb'
  watch 'config/environment.rb'
  watch %r{^config/environments/.+\.rb$}
  watch %r{^config/initializers/.+\.rb$}
  watch 'Gemfile'
  watch 'Gemfile.lock'
  watch 'spec/spec_helper.rb' do 'spec' end
end

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

  watch %r{^spec/.+_spec\.rb$}
  watch %r{^app/(.+)\.rb$} do |m| "spec/#{m[1]}_spec.rb" end
  watch %r{^app/(.*)(\.erb|\.haml)$} do |m| "spec/#{m[1]}#{m[2]}_spec.rb" end
  watch %r{^lib/(.+)\.rb$} do |m| "spec/lib/#{m[1]}_spec.rb" end
  watch %r{^app/controllers/(.+)_(controller)\.rb$} do |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] end
  watch %r{^spec/support/(.+)\.rb$} do 'spec' end
  watch 'spec/spec_helper.rb' do "spec" end
  watch 'config/routes.rb' do 'spec/routing' end
  watch 'app/controllers/application_controller.rb' do 'spec/controllers' end
  # Capybara request specs
  watch %r{^app/views/(.+)/.*\.(erb|haml)$} do |m| "spec/views/**/#{m[1]}_spec.rb" end
  watch %r{^app/.*\.sass$} do 'spec/requests/*' end
end

私は次のようなことを考えました:

watch %r{^app/models/*.rb} do system `killall bundle` end
…

しかし、それは明らかに大したことではありません。それでも、偽って合格したテストがスクロールするのを見るよりはましです。

このセットアップをより良くするためのアドバイスをありがとう。

4

1 に答える 1

0

これが私の「1日目」の編集です(つまり、上記のものは、できるだけ少ない学習でそれを進めようとして手探りしていましたが、これはもう少し情報に基づいています). これは私にとってはるかにうまく機能しています。

notification :on
guard 'spork', wait: 45, rspec_env: { 'RAILS_ENV' => 'test' } do
  [
    %r{^config/(environments|initializers)/.+\.rb$},
    %r{^config/(application|environment|routes)\.rb$},
    %r{Gemfile(.lock)?},
    %r{^lib/},
    %r{app/(models|controllers)},
    'spec/spec_helper.rb'
  ].each do |e| watch e end
end
guard 'rspec', version: 2 do
  watch %r{^spec/.+_spec\.rb$}
  watch %r{^app/(.+)\.rb$} do |m| "spec/#{m[1]}_spec.rb" end
  watch %r{^lib/(.+)\.rb$} do |m| "spec/lib/#{m[1]}_spec.rb" end
  watch %r{^app/(.*)(\.erb|\.haml)$} do |m| "spec/#{m[1]}#{m[2]}_spec.rb" end
  watch %r{^app/views/(.+)/.*\.(erb|haml)$} do |m| "spec/views/**/#{m[1]}_spec.rb" end
  watch %r{^app/.*\.sass$} do 'spec/requests/*' end
end

正常に動作しています。さらに改良が加えられると思います。—☈

于 2012-08-10T06:14:54.853 に答える