2011-09-05 6 views
5

this setupを使用してカスタムエンジンを開発しています。私はGuardにファイルの更新が表示されない

rails plugin new MyEngine --full 

でエンジンを作成しました

それから私は私のgemspecファイルに

s.add_development_dependency "rspec-rails" 
s.add_development_dependency "guard-rspec" 

と開発の依存関係としてrspec-railsguard-rspecを追加しました。

rspecrake specbundle execの有無にかかわらず)を実行すると、仕様が正常に動作します。 guardコマンドを実行すると、すべての仕様が最初に実行され、何も行われません。それは、アプリケーション全体でファイルの変更を検出しません。 Guardfileがguard init specでいつものように生成される

私はガードが動作しているオープン殻を維持し、私はtouch app/my_model.rb何も起こらない別のシェルから実行する場合は、ここではその内容

# A sample Guardfile 
# More info at https://github.com/guard/guard#readme 

guard 'rspec', :version => 2 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{^spec/.+_spec\.rb$}) 
    watch(%r{^app/(.+)\.rb$})       { |m| "spec/#{m[1]}_spec.rb" } 
    watch(%r{^lib/(.+)\.rb$})       { |m| "spec/lib/#{m[1]}_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('spec/spec_helper.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" } 
end 

です。 Guardfileにリストされている他のすべてのファイル(パターン)についても同じです。

このような問題をデバッグする方法はありますか?

更新 私は新しいプロジェクト(レール1)を作成し、私は何も起こりません任意のファイルを編集する場合この場合であっても、このGuardfile

guard 'shell' do 
    watch(%r{(.*)}) {|m| `cat #{m[0]}` } 
    watch(%r{(.*)}) {|m| raise m.to_s } 
end 

guard-shell宝石をインストールしました。私はこの問題が別の場所にあると思うようになっています。おそらくrb-fseventsの宝石の中にあります。私は何を確認できますか?

答えて

1

何が問題なのか分かりませんが、何らかの形で凍結されていたfseventdに問題がありました。問題は、それ自体が

> guard 
Please install rb-fsevent gem for Mac OSX FSEvents support 
Using polling (Please help us to support your system better than that.) 
Please install growl or growl_notify gem for Mac OS X notification support and add it to your Gemfile 

また、システムの再起動が(デーモンを再起動する方法がわからない)ガードしていなかったので、問題を解決したことなく、ガードを実行する

が持っている「ロック解除」fseventdと今それは再び働く。一ヶ月以上システムを再起動しなかったので、たぶん私のせいでした...

10

rspecのガードファイルは明らかに正しくありません。 app/controllersを見ていますが、app/modelsは見ていません。お使いのモデルの仕様が保存されている場所への第二の部分

watch(%r{^app/models/(.+)\.rb$}) {|m| "spec/models/#{m[1]}_spec.rb" } 

変更:

はあなたのようなルールが必要に思います。 rspecを使用してから、仕様ディレクトリのレイアウトを覚えていないので、しばらくお待ちください。

編集:

また、libウォッチャーは2回定義されていますか?一度はトップに、もう一度はレールの下に。その2番目の定義が間違いで、app/modelsのルールであることを意味しているのだろうか。

+0

そうです、(デフォルトの)生成ファイルを更新します。しかし、それは問題ではありません。私の質問への編集を参照してください。 – Fabio

+0

ああ、私は... --debugフラグでガードを実行できますが、おそらくそれを試したと思います。 – numbers1311407

+0

うん、私はそれを試して、thx。私はちょうどシステムの再起動で解決しました、[私の答え](http://stackoverflow.com/questions/7311405/guard-doesnt-see-file-updates/7312249#7312249)を見てください。 – Fabio

0

私の環境で説明したのと同じ症状を示した現在のバージョン1.2.2にもバグがあるようです。 1.2.3へのアップデートは助けになりました。

0

私の場合、Guardは最初に動作します。それから私はそれが見るディレクトリへのシンボリックリンクを作成しました。それは止まった。

"source/example"を監視しているとします。私は "source/link_me" - > "source/example"というシンボリックリンクを作成しました。ガードも静かなままです。

関連する問題