我绝对感到困惑......(而且非常沮丧......)
由于某些原因,后卫并未检测到osx上的文件更新,但仅针对某些文件。它几乎就像手表功能中定义的正则表达式无法正常工作......
我创建了一个全新的rails应用程序,用于摆弄以下Ryans后卫护栏 - 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
如果我在spec目录中编辑application_controller.rb或spec文件,后卫将自动运行正常。
但如果我编辑并保存任何其他控制器,则没有任何反应。
guard
和bundle exec guard
同时保持警惕,没有区别;它只运行整个套件,然后在一个提示符处坐下。
macbook pro os v10.6.8。
RVM与Ruby-1.9.3-p286和Rails 3.2.8
rb-fsevent 0.9.2
我的一个同事正在使用相同的系统规格(公司发布的mbp' s)从git中直接运行完全相同的东西,这对他有效。
当他编辑app/home_controller.rb
并且只是给它一个额外的线或什么时,点击保存..测试开始。
当我编辑文件并点击保存时,没有任何反应,但是如果我编辑app/application_controller.rb
它会触发..
我很困惑......我很沮丧......我需要帮助,因为我不知所措......
思想?
答案 0 :(得分:2)
看起来rb-fsevent是OS X 10.6的问题。您可以尝试通过在rb-fsevent
中设置固定版本来使用旧版Gemfile
gem 'rb-fsevent', '0.9.0'
或者您可以通过切换到轮询解决问题:
bundle exec guard --force-polling