私は絶対に困惑しています.. (そしてかなりイライラしています..)
何らかの理由で、guard は osx でファイルの更新を検出せず、特定のファイルのみを検出します。ウォッチ関数で定義された正規表現が機能していないか何かのようです..
Ryans ガード railscast をいじるために、まったく新しい Rails アプリを作成しました -- 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 OS v10.6.8.
RVM と Ruby-1.9.3-p286 および Rails 3.2.8 rb-fsevent 0.9.2
私の同僚の 1 人は、同じシステム仕様 (会社が発行した mbp) で git から直接引き出されたまったく同じものを実行しており、それは彼のために機能します。
彼が編集app/home_controller.rb
して余分な行か何かを与えると、保存がヒットします..テストが起動します。
ファイルを編集して保存しても何も起こりませんが、編集するapp/application_controller.rb
と起動します..
私は混乱しています.私は欲求不満です..途方に暮れているので助けが必要です..
考え?