每次请求时自动重新加载wisper听众

时间:2015-02-05 14:33:28

标签: ruby-on-rails wisper

我在app / listeners目录中有很好的监听器。

我也有/config/initializers/wisper.rb

module Wisper
  def self.setup
    configure do |config|
      config.broadcaster(:default, Broadcasters::LoggerBroadcaster.new(Rails.logger, Broadcasters::SendBroadcaster.new))
    end
  end
end

Wisper.setup

Wisper.subscribe(ProjectListener.new)
Wisper.subscribe(FeedListener.new)

我可以以某种方式强制Rails在每次请求时重新加载监听器吗?

1 个答案:

答案 0 :(得分:18)

您可以尝试将订阅包装在to_prepare块中,例如:

Rails.application.config.to_prepare do
  Wisper.clear if Rails.env.development?
  Wisper.subscribe(ProjectListener.new)
  Wisper.subscribe(FeedListener.new)
end

to_prepare在生产中和开发环境中的每个请求之前调用一次。

如果您订阅了多个初始化程序,则可以将Wisper.clear放入名为“01_clear_subscribers”的初始化程序中,以确保只清除一次订阅者。

顺便说一句,您无需覆盖setup来配置广播公司,只需执行Wisper.configure do |config|