我如何为守卫编写自定义通知程序?

时间:2013-03-25 20:45:46

标签: arduino guard

我正在尝试为guard编写一个自定义通知程序,用于打开带有arduino的LED。

无论如何,我已经通过向lib/guard/notifiers添加文件并将我的新自定义类添加到lib/guard/notifier.rb中的Guard::Notifier::NOTIFIERS来实现它。

但是,我不认为我的新通知器应该是guard gem的一部分,所以我想创建一个gem。我找不到自定义通知程序宝石的任何示例,而且我很难弄清楚如何将自定义通知程序添加到防护中。

Here is my initial attemptadds my custom class to Guard::Notifier::NOTIFIERS with the << operator。它不起作用,因为后卫重新加载了rspec(我在一个单独的过程中猜测)。如果需要,我可以提供有关我的调试的更多信息。

我的问题是:使用自定义通知程序作为单独的宝石扩展防范的最佳方法是什么?

后续跟进:这是一个可以添加到后卫的功能吗?

我通常会在问题中添加一个github问题(嘿,我可以帮助改善它吗?),但是贡献文件说要问这里。

1 个答案:

答案 0 :(得分:2)

Guard核心团队确实不想在问题跟踪器中对Guard的使用有任何疑问,仅仅因为它对我们来说非常耗时,而且通常情况下人们只是懒得阅读优秀自述。在StackOverflow上提出要求,用户更有可能帮助自己,腾出时间来开发Guard,而不是提供免费支持。对于与开发相关的问题,我们引导人们访问Google group,其中所有核心成员都在阅读消息,您可能会在几个小时内得到一个称职的答案。

我不介意合并外来通知程序的拉取请求,因为它们几乎没有成本。我们很可能在将来将该模块提取到自己的gem中,因此其他人可以重用通知器功能,就像我们为Listen所做的那样。

最后解决您的问题:您是对的,guard-rspec通知程序在子进程中运行,这就是我们have this ugly hack to share通知设置和通知程序不起作用的原因。它不起作用的原因是Guard没有插件加载,因为it only requires files supplied with the -r option。这意味着您只有以下可能性使通知程序与rspec一起使用:

  • 使用cli将通知程序加载到-r选项中,但您需要将绝对路径传递给文件,可能使用辅助方法(简单)。
  • 扩展Guard :: Notifier以在任何Guard插件中搜索通知程序类(代价高昂)。
  • Monkey修补rspec_arguments方法以包含通知程序(不推荐)。