このセットアップを使用してカスタムエンジンを開発しています。
私はエンジンを作成しました
rails plugin new MyEngine --full
次に、開発の依存関係として追加rspec-rails
しましたguard-rspec
s.add_development_dependency "rspec-rails"
s.add_development_dependency "guard-rspec"
私のgemspecファイルにあります。
両方を実行するrspec
とrake spec
(またbundle exec
はなしで)、スペックは正常に実行されます。ただし、コマンドを実行すると、guard
すべての仕様が初めて実行され、その後は何も実行されません。アプリ全体でファイルの変更は検出されません。
Guardfileは通常どおりに生成されguard init spec
ます。その内容は次のとおりです。
# 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
ガードを実行したままシェルを開いたままにして、別のシェルから実行してtouch app/my_model.rb
も何も起こりません。Guardfileにリストされている他のすべてのファイル(パターン)についても同じです。
この種の問題をデバッグする方法はありますか?
アップデート
私は新しいプロジェクト(レールプロジェクト)を作成し、これを使ってガードシェルジェムをインストールしましたGuardfile
guard 'shell' do
watch(%r{(.*)}) {|m| `cat #{m[0]}` }
watch(%r{(.*)}) {|m| raise m.to_s }
end
この場合でも、ファイルを編集しても何も起こりません。rb-fsevents
問題はどこか別の場所、おそらく宝石にあるのではないかと私は考え始めています。何を確認できますか?