2015-02-05 5 views
7

मेरे पास ऐप/श्रोताओं निर्देशिका में शुभ श्रोताओं हैं।प्रत्येक अनुरोध पर स्वचालित रूप से बुद्धिमान श्रोताओं को पुनः लोड करें

मैं भी /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) 

मैं किसी भी तरह हर अनुरोध पर श्रोताओं फिर से लोड करने के लिए मजबूर कर सकते हैं रेल है?

उत्तर

13

आप एक 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 उत्पादन में और विकास के वातावरण में हर अनुरोध से पहले एक बार कहा जाता है।

यदि आप एक से अधिक प्रारंभिक में सदस्यता लेते हैं तो आप '01_clear_subscribers' नामक प्रारंभकर्ता में Wisper.clear डाल सकते हैं ताकि यह सुनिश्चित किया जा सके कि ग्राहक केवल एक बार साफ़ हो जाएं।

संयोग से आपको ब्रॉडकास्टर को कॉन्फ़िगर करने के लिए setup ओवरराइड करने की आवश्यकता नहीं है, बस Wisper.configure do |config| करें।

+1

यह टीडीडी/बीडीडी मोड में भी काम करता है: Wisper.clear जब तक Rails.env.production? – Boti

+5

यह ध्यान देने योग्य है कि इस समस्या को ठीक किया गया था जहां मेरे किसी भी रेल कोड में परिवर्तन के परिणामस्वरूप "एक्स की एक प्रति मॉड्यूल पेड़ से हटा दी गई है लेकिन अभी भी सक्रिय है!" त्रुटि। उम्मीद है कि, इस टिप्पणी का मतलब यह होगा कि लोगों को यह समाधान जल्दी से मिलेगा! –

+0

मैं अपने रेल प्रोजेक्ट में इस मुद्दे में भाग गया और मैंने 'to_prepare' के बजाय 'पहले_इनिलाइज' का उपयोग करने का निर्णय लिया ताकि मैं सुनिश्चित कर सकूं कि सभी वातावरण के लिए प्रारंभिक प्रक्रिया के दौरान स्पष्ट केवल एक बार चलता है। – ecbrodie

संबंधित मुद्दे

 संबंधित मुद्दे