在每次请求时自动重新加载 wisper 监听器
reload wisper listeners automatically at every request
我在 app/listeners 目录中有 wisper 监听器。
我还有 /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 在每次请求时重新加载监听器?
您可以尝试将订阅包装在 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|
.
我在 app/listeners 目录中有 wisper 监听器。
我还有 /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 在每次请求时重新加载监听器?
您可以尝试将订阅包装在 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|
.