Guardfile DSL - 如何进行特定于站点的配置

时间:2013-07-04 05:29:09

标签: ruby-on-rails guard

我正在尝试在同一个项目的几台不同机器上使用Guard。

一台机器是OSX。另一台机器的开发人员需要emacs通知。我个人厌恶tmux通知以及emacs通知,但我真的很喜欢终端标题和libnotify弹出窗口。

当我添加到Guardfile的开头时,我认为我很聪明:

Dir.glob("./Guardfile-site-*").each { |file| include file }

只包含:

notification :libnotify, :timeout => 5, :transient => true, :append => false, :urgency => :critical

然后将文件/Guardfile-site-myname-home-dev添加到.gitignore

不幸的是产量

[1] guard(main)> 01:21:38 - ERROR - Invalid Guardfile, original error is:
> [#] undefined method `include' for #<Guard::Dsl:0x000000037e5920>

在没有必须每次在Guard中手动重新配置此操作的情况下,执行此操作的“正确方法”是什么?

我在考虑环境变量。将GUARD_NOTIFY设置为FALSE会完全阻止它们,但这不是我想要的。

1 个答案:

答案 0 :(得分:1)

您可以将用户特定的配置放入~/.guard.rb。 Guard会自动将该文件的内容添加到Guardfile中。

如果您乐意在所有项目中使用相同的配置,那将对您有用。

如果您需要在每个项目的基础上调整设置,那么您可以调整已有的代码。 include将无效,因为它是Module上的一个类方法,它需要一个模块参数。看the way guard loads a Guardfile这样的事情应该有效:

Dir.glob("Guardfile-site-*").each { |file| config = File.read("#{File.dirname(__FILE__)}/#{file}"); instance_eval(config) }