Перезагружать слушателей wisper автоматически при каждом запросе
У меня есть слушатели 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 ответ
Решение
Вы можете попробовать обернуть подписки в 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_subscribeers`, чтобы убедиться, что подписчики очищаются только один раз.
Кстати, вам не нужно переопределять setup
чтобы настроить вещателя, просто сделайте Wisper.configure do |config|
,