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

Което изглежда извежда два пъти „a js е нов“, ако редактирам файл с 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
Това изглежда свърши работа! Благодаря за последващите действия :) Засега съм любящ пазач и се надявам скоро да се заровя повече в него. Освен това, тъй като току-що направих „пакетна актуализация“, премахнах и guard 1.5.1, ако това повлияе на нещо. Пътувам този уикенд или щях да видя това по-рано. - person Rockshandy; 29.10.2012