0

我正在使用bundle exec guard它作为我的主要测试运行者,我喜欢它,即使我完全不了解它。

困扰我的事情是我必须手动“r”重新启动它以进行任何真正的代码更改。我对缓慢的重新加载时间感到满意(尽管如果它执行类似rails c's 的操作会很好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 回答