【问题标题】:How do a I write a custom notifier for guard?如何为警卫编写自定义通知程序?
【发布时间】:2013-03-26 20:52:44
【问题描述】:

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

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

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

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

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

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

我通常会在问题中添加一个 github 问题(嘿,我可以帮助改进一下吗?),但 CONTRIBUTING 文档说要在这里提问。

【问题讨论】:

    标签: arduino guard


    【解决方案1】:

    确实,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 一起工作:

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

    【讨论】:

    • 感谢您的回答。我将开始修改对在运行时添加通知程序的支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2019-09-20
    相关资源
    最近更新 更多