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