我非常困惑..(也很沮丧..)
出于某种原因,guard 没有检测 osx 上的文件更新,而只是检测某些文件。这几乎就像 watch 函数中定义的正则表达式不起作用或什么的..
我已经创建了一个全新的 Rails 应用程序,用于在 Ryans 防护 railscast 之后摆弄——http ://railscasts.com/episodes/264-guard
并具有生成的默认保护文件;
guard init spec
看起来像这样;
# A sample Guardfile
# More info at https://github.com/guard/guard#readme
guard 'rspec', :cli => "--color --format nested --fail-fast" 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{^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
如果我在规范目录中编辑 application_controller.rb 或规范文件,守卫将自动运行就好了。
但是,如果我编辑并保存任何其他控制器,则什么也不会发生。
我两者都跑后卫guard
,bundle exec guard
没有区别;它只运行一次完整的套件,然后在提示时坐在那里。
macbook pro 操作系统 v10.6.8。
带有 Ruby-1.9.3-p286 和 Rails 3.2.8 rb-fsevent 0.9.2 的 RVM
我的一位同事正在运行具有相同系统规格(公司发行的 mbp)直接从 git 中提取的完全相同的东西,并且它适用于他。
当他编辑app/home_controller.rb
并只给它额外的一行或其他东西时,点击保存..测试触发。
当我编辑文件并点击保存时,没有任何反应,但如果我编辑app/application_controller.rb
它会触发..
我很困惑..我很沮丧..我需要帮助,因为我不知所措..
想法?