Guard-coffee, похоже, заставляет Guard-Shell выполняться дважды

У меня есть настройка Guard (ruby gem), и, похоже, он работает на моем Mac, а настройка Guard из Guard-Coffee и Guard-Shell работает нормально. Вот соответствующий раздел моего 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

Кажется, что дважды выводится «js is new», если я редактирую файл coffeescript. С отладкой он, кажется, работает после

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? Я пытался использовать группы и выполнять часть оболочки только в том случае, если я был в группе и не хотел повторять кофейную защиту в случае, когда вместо этого я использовал бы обратный вызов.

Любые мысли о том, как я могу перестать дважды срабатывать защитный кожух, когда срабатывает кофе?


person Rockshandy    schedule 25.10.2012    source источник


Ответы (1)


До Guard 1.0.0 новые файлы, созданные и обновленные с помощью подключаемого модуля Guard, не приводили к последующему изменению файла для других подключаемых модулей. Это было проблемой, например, с плагинами CoffeeScript и LiveReload: когда файл JavaScript был обновлен, LiveReload не перезагружала файл. В качестве обходного пути я добавил ручной запуск файла код. С гемом Listen это ограничение было снято, поэтому подключаемый модуль CoffeeScript вызывает изменения файла дважды.

Я удалил его в моей главной ветке. Не могли бы вы попробовать, прежде чем я выпущу новый драгоценный камень? Вы можете сделать это легко, используя мою основную ветку, добавив:

gem 'guard-coffeescript', :github => 'netzpirat/guard-coffeescript', :branch => 'master'

к вашему Gemfile. Я выпущу новый драгоценный камень как можно скорее, когда он будет работать нормально.

person Netzpirat    schedule 26.10.2012
comment
Казалось, это помогло! Спасибо за продолжение :) Пока что я люблю гвардию и, надеюсь, скоро углублюсь в нее. Кроме того, поскольку я только что сделал «обновление пакета», я также отключил защиту 1.5.1, если это также повлияло на что-либо. Я путешествую в эти выходные, иначе я бы увидел это раньше. - person Rockshandy; 29.10.2012