Перезагружать слушателей 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|,

Другие вопросы по тегам