开源项目教程:Abstract Notifier
1. 项目介绍
Abstract Notifier 是一个工具,它允许您以类似Action Mailer处理电子邮件通知的方式来描述和建模任何基于文本的通知(如推送通知)。这个名字正如其意,它不提供发送通知的具体实现,而是提供了组织您的通知特定代码并使其易于测试的工具。虽然本库中的许多示例都是针对Rails的,但实际上,这个gem可以在没有Rails或ActiveSupport的情况下使用。项目要求Ruby版本约为2.4。
2. 项目快速启动
安装步骤
首先,在您的应用的Gemfile中添加以下行:
gem "abstract_notifier"
然后执行安装命令:
$ bundle
如果您在非Rails环境中使用,可能需要手动在spec_helper.rb
或rails_helper.rb
文件中加入require "abstract_notifier/testing"
来支持测试环境配置。
接下来,配置主动传递以使用Abstract Notifier:
class ApplicationDelivery < ActiveDelivery::Base
register_line :notifier, ActiveDelivery::Lines::Notifier
end
这将使得您可以像处理邮件一样定义和发送通知。
3. 应用案例和最佳实践
创建通知类
假设我们需要创建一个事件取消通知,可以这样定义:
class EventsNotifier < ApplicationNotifier
def canceled(event)
notification(
body: "事件#[event.title]已被取消",
identity: params[:profile],
notification_service_id:
)
end
end
发送同步通知的例子:
EventsNotifier.with(profile: profile).canceled(event).notify_now
异步通知:
EventsNotifier.with(profile: profile).canceled(event).notify_later
测试通知
在RSpec测试中,可以利用提供的匹配器确保通知被正确发送:
expect do
EventsNotifier.with(profile: profile).canceled(event).notify_now
end.to have_sent_notification(identify: "123", body: "事件已取消")
4. 典型生态项目
虽然Abstract Notifier本身设计为通用的,与特定的生态项目直接结合的信息不多,但它的灵活性让它成为集成到各种Ruby应用中的理想选择。尤其对于那些已经依赖于Action Mailer风格处理消息的应用,它无缝衔接,并扩展了通知系统的能力,无需绑定到特定的服务提供商,允许开发者轻松定制通知服务接口。
由于Abstract Notifier的目标是通用性和抽象性,最好的“生态”实践往往是它如何与其他消息处理框架或现有工作流程整合,比如集成到现有的任务队列如Sidekiq或Resque中用于异步通知发送,或者与业务逻辑紧密结合,通过策略模式管理不同的通知规则和场景。
以上就是关于Abstract Notifier的基本使用教程,希望对您的开发工作有所帮助。记得在实际应用中根据具体需求调整配置和实践方法。