0

我的配置目录中有一个初始化程序,如下所示:

ActiveSupport::Notifications.subscribe "handle_translation_event" do |name, start, finish, id, payload|
  puts "Called"
end

我有一个正在运行的 Rails 开发服务器(rails s),我同时启动了一个 Rails 控制台(rails c)。想象一下,在 Rails 控制台中,我写道:

ActiveSupport::Notifications.instrument("handle_translation_event")

我看不到这反映在服务器日志中。是否可以从控制台触发事件并影响服务器?我的猜测是否定的。

4

1 回答 1

1

ActiveSupport::Notifications使用ActiveSupport::Notifications::Fanout类作为通知者来通知订阅者。

这个通知器使用简单的实例变量来存储订阅者。

您可以创建自己的实现(使用数据库支持的解决方案),并且可以通过notifier设置ActiveSupport::Notifications.

ActiveSupport::Notifications.notifier = my_implementation

我可以想象一个简单的Redis支持的实现,因为它具有发布/订阅功能。但是如果你没有 Redis 作为依赖,你也可以用 SQL 来做。

于 2012-08-31T11:26:18.010 回答