вывод guard-haml в несколько мест

Я хотел бы, чтобы Guard отправлял вывод компиляции haml в два разных места. Я дважды пытался вызвать haml в своем Guardfile, например:

guard 'haml', :output => 'first_dir/', :input => 'src/haml' do
  watch %r{^src/haml/.+(\.html\.haml)(?!(\.swp))}
end
guard 'haml', :output => 'second_dir/', :input => 'src/haml' do
  watch %r{^src/haml/.+(\.html\.haml)(?!(\.swp))}
end

Но это просто входит в бесконечный цикл. Как должен выглядеть мой Guardfile для вывода в два разных каталога?


person Lee Quarella    schedule 30.04.2012    source источник


Ответы (2)


Я не вижу никаких проблем с вашим Guardfile. В качестве обходного пути вы можете использовать группы и запустить два процесса Guard:

group :first do
  guard 'haml', :output => 'first_dir/', :input => 'src/haml' do
    watch %r{^src/haml/.+(\.html\.haml)(?!(\.swp))}
  end
end

group :second do
  guard 'haml', :output => 'second_dir/', :input => 'src/haml' do
    watch %r{^src/haml/.+(\.html\.haml)(?!(\.swp))}
  end
end

и теперь вы запускаете каждый в своем терминале:

guard -g first
guard -g second

Не совсем элегантно, но сойдет...

person Netzpirat    schedule 25.05.2012
comment
@ Gowie47 Спасибо за подсказку. Я обновил свой ответ, чтобы исправить неправильные группы. - person Netzpirat; 13.03.2013
comment
Прохладно. Вы когда-нибудь использовали группы раньше? Я попробовал описанный выше метод, и он создал бесконечный цикл, в котором он просто постоянно вызывает оба метода haml, пока Guard не выдаст исключение стека. - person Gowiem; 13.03.2013
comment
@ Gowie47 Gowie47 Конечно, я использую групповую функцию (я написал ее), но я не использую плагин Haml. Я часто группирую большие определения Guardfile и запускаю разные группы на разных терминалах, поэтому у меня параллельное выполнение разных задач. - person Netzpirat; 13.03.2013

Для всех, кто натолкнется на приведенный выше ответ и стукнется головой о стену, пытаясь заставить группы работать, Netzpirat ошибся в синтаксисе. Правильный синтаксис следующий:

group :iPhone do
    guard 'haml', :input => 'src/haml', :output => '../iPhone/www/' do
        watch %r{^src/haml/.+(\.html\.haml)}
    end
end

Спасибо по-прежнему Netzpirat, так как я на самом деле не знал об этой функции до этого SO-вопроса.

person Gowiem    schedule 13.03.2013