0

我正在尝试在同一项目的几台不同机器上使用 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_NOTIFYFALSE将完全阻止它们,但这不是我想要的。

4

1 回答 1

1

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

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

如果您需要在每个项目的基础上调整设置,那么您可以调整已有的代码。include不起作用,因为它是一个类方法Module并且它需要一个模块参数。查看警卫加载 Guardfile 的方式应该可以工作:

Dir.glob("Guardfile-site-*").each { |file| config = File.read("#{File.dirname(__FILE__)}/#{file}"); instance_eval(config) }
于 2013-07-04T12:25:10.493 回答