2015-02-05 21 views
7

azından ben app/dinleyici dizininde Wisper dinleyicileri var.yeniden Wisper dinleyicileri otomatik olarak her isteği

Ben de ben bir şekilde her isteği üzerine Dinleyiciler yeniden Rails zorlayabilir miyim /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) 

var?

cevap

13

Bir to_prepare bloğunda abone olmuş sarma deneyebilirsiniz, gibi bir şey:

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

to_prepare üretimde ve geliştirme ortamında her isteği önce bir kez denir.

Birden fazla başlatıcıya abone olursanız, abonelerin yalnızca bir kez temizlendiğinden emin olmak için '01_clear_subscribers' adlı bir başlatıcıya Wisper.clear kodunu koyabilirsiniz.

Bu arada yayıncıyı yapılandırmak için setup'u geçersiz kılmanız gerekmez, sadece Wisper.configure do |config| yapın.

+1

Bu, TDD/BDD modunda da çalışır: Rails.env.production değilse Wisper.clear? – Boti

+5

Bu benim Raylar kodun herhangi bir değişiklik sonuçlandı ben sorunu sabit dikkati çekiyor "X bir kopyası modülü ağacından kaldırıldı ama hala aktiftir!" hata. Umarım, bu yorum insanların bu çözümü benden daha hızlı bulacağı anlamına gelecektir! –

+0

benim Raylar projede bu konuya koştum ve ben net tüm ortamlar için başlatma işlemi sırasında sadece bir kez çalışmasını sağlamak, böylece yerine to_prepare' 'arasında before_initialize'' kullanmaya karar verdi. – ecbrodie

İlgili konular