我在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在每次请求时重新加载监听器吗?
答案 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|
。