1

我正在尝试编写一个自定义通知程序,用于使用 arduino 打开 LED的守卫。

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

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

这是我最初的尝试它将我的自定义类添加到Guard::Notifier::NOTIFIERS运算<<中。它不起作用,因为为 rspec 重新加载了警卫(我猜是在一个单独的过程中)。如果需要,我可以提供有关我的调试的更多信息。

我的问题是:使用自定义通知器作为单独的 gem 扩展保护的最佳方法是什么?

以及后续:这是可以添加到守卫的功能吗?

我通常会在这个问题中添加一个 github 问题(嘿,我可以帮助使它变得更好吗?),但是 CONTRIBUTING 文档说在这里问。

4

1 回答 1

2

确实,Guard 核心团队不想对问题跟踪器中 Guard 的使用有任何疑问,仅仅是因为这对我们来说非常耗时,而且人们常常只是懒得阅读优秀的 README。在 StackOverflow 上提问使用户更有可能自助,从而腾出时间来开发 Guard,而不是提供免费支持。对于与开发相关的问题,我们会将人们引导至我们的Google 群组,所有核心成员都在其中阅读消息,并且您可能会在几个小时内得到有效的答案。

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

最后解决您的问题:您是对的,guard-rspec 通知程序在子进程中运行,这就是为什么我们有这个丑陋的黑客来共享通知设置而您的通知程序不起作用。它不起作用的原因是 Guard 是在没有插件的情况下加载的,因为它只需要-r选项提供的文件。这意味着您只有以下可能使您的通知程序与 rspec 一起工作:

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