我有防守(红宝石宝石)设置,并且它似乎在我的Mac上工作,并设置了一个防护 - 咖啡和防护 - 外壳似乎工作正常。这是我的Guardfile下面的相关部分
guard 'coffeescript', :input => 'src/javascripts', :output => 'public/javascripts'
guard 'shell' do
watch( %r{^public/.+\.(js|css)$} ) do |m|
puts m.inspect
if m[1] == 'js'
puts 'a js is new!'
else
puts 'a css is new!'
end
puts %x{ echo #{File.mtime(m[0])} }
end
end
如果编辑coffeescript文件,似乎输出'a js is new'两次。使用调试它似乎在
之后运行13:39:23 - DEBUG - Hook :run_on_changes_begin executed for Guard::CoffeeScript
13:39:23 - INFO - Compile src/javascripts/blah.coffee
13:39:23 - INFO - 01:39:23 PM Successfully generated public/javascripts/blah.js
["public/javascripts/blah.js", "js"]
a js is new!
和
13:39:23 - DEBUG - Hook :run_on_changes_end executed for Guard::CoffeeScript
["public/javascripts/blah.js", "js"]
a js is new!
如果直接编辑blah.js文件,它似乎只会触发一次。我对钩子如何工作感到有点困惑,我可以从另一个守卫那里锁上钩子吗?我应该在coffeescript后卫的回调中运行此代码吗?我试图使用组,如果我在一个组中只做shell部分,并且不想在我使用回调的情况下重复咖啡保护。
关于如何在咖啡火灾时停止触发炮弹守卫的任何想法?
答案 0 :(得分:1)
在Guard 1.0.0之前,从Guard插件创建和更新的新文件未触发其他插件的后续文件更改。这是一个问题,例如CoffeeScript和LiveReload插件:当JavaScript文件更新后,LiveReload没有重新加载文件。作为一种解决方法,我添加了一些manual file trigger code。使用Listen gem已删除此限制,因此CoffeeScript插件会两次触发文件更改。
我removed在我的主分支上。在发布新宝石之前,你能试一试吗?您可以通过添加:
使用我的主分支轻松完成此操作
gem 'guard-coffeescript', :github => 'netzpirat/guard-coffeescript', :branch => 'master'
到Gemfile
。当它工作正常时,我会尽快发布新的宝石。