【问题标题】:Better Guard (Spork/RSpec)更好的后卫(Spork/RSpec)
【发布时间】:2012-08-09 18:51:34
【问题描述】:

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

困扰我的是我必须手动“r”重新启动它以进行任何实际代码更改的方式。我对缓慢的重新加载时间感到满意(尽管如果它像rails c's reload! 那样做会很好),但我不能忍受的是必须手动切换到窗口并且点击r。特别是当我忘记这样做时,并认为这一切都很好。所以它是在低效率之上的不一致。

这是我的 Guardfile:

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
…

但这显然是一个巨大的组合。仍然比看到假通过的测试滚动要好。

感谢您提供有关改进此设置的任何建议。

【问题讨论】:

  • 啊哈,这个方法很简单。您需要做的就是在该guard 'spork' 部分添加更多watch 行。里面的任何东西都会重新启动整个事情。

标签: rspec bundle guard spork


【解决方案1】:

这是我的“第 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

一切正常。我敢打赌,还会有更多改进。 ——☈

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2011-12-31
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多