1

私は絶対に困惑しています.. (そしてかなりイライラしています..)

何らかの理由で、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と起動します..

私は混乱しています.私は欲求不満です..途方に暮れているので助けが必要です..

考え?

4

1 に答える 1

2

OS X 10.6 のrb-fseventに問題があるようです。rb-fsevent固定バージョンをGemfile好きなように設定することで、古いバージョンの が機能するかどうかを試すことができます

gem 'rb-fsevent', '0.9.0'

または、ポーリングに切り替えることで問題を回避できます。

bundle exec guard --force-polling

于 2012-11-01T08:51:30.287 に答える