【问题标题】:guard-haml output to multiple locationsguard-haml 输出到多个位置
【发布时间】:2013-03-14 02:00:12
【问题描述】:

我希望 Guard 将 haml 编译的输出发送到两个不同的地方。我尝试在我的 Guardfile 中调用 haml 两次,如下所示:

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 需要什么样的外观才能输出到两个不同的目录?

【问题讨论】:

    标签: haml guard


    【解决方案1】:

    我认为您的 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
    

    不是很优雅,但它会工作......

    【讨论】:

    • @Gowie47 感谢您的提示。我更新了我的答案以纠正错误的组。
    • 酷。你以前用过组吗?我尝试了上面的方法,它创建了一个无限循环,它只是不断地调用这两个haml方法,直到guard抛出一个堆栈异常。
    • @Gowie47 当然我使用组功能(我写的),但我不使用 Haml 插件。我经常对大型 Guardfile 定义进行分组,并在不同的终端中运行不同的组,因此我对不同的任务进行并行执行。
    【解决方案2】:

    对于任何遇到上述答案并试图让小组工作的人,Netzpirat 的语法错误。正确的语法如下:

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

    仍然感谢 Netzpirat,因为直到这个 SO 问题我才真正了解此功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      相关资源
      最近更新 更多