2010-08-21 8 views
6

http://edgeapi.rubyonrails.org/classes/Rails/Railtie.html के अनुसार, अगर मैं एक रेल 3 प्लगइन लिख सकते हैं और मैं आरंभीकरण प्रक्रिया में हुक करना चाहते हैं, मैं लिखनेकेवल सर्वर मोड में 3 बूट प्रक्रिया रेल को

class MyRailtie < Rails::Railtie 
    initializer "my_railtie.configure_rails_initialization" do 
    # some initialization behavior 
    end 
end 

हालांकि, इस प्रारंभकर्ता प्रकट होता है आरंभीकरण चरण जोड़ें उदाहरण के लिए, जब आप rails s या इसी तरह चलाते हैं, तो एक रेल rake कार्य चलाते समय निष्पादित किया जाना चाहिए। मेरा सवाल यह है कि, मैं इस ब्लॉक में रेल कोड के दौरान चलने से अपने कोड को कैसे रोकूं, क्योंकि पूर्ण रेल सर्वर बूट-अप के विपरीत? यह रेल 3 प्लगइन्स के साथ एक आम समस्या प्रतीत होता है।

उत्तर

0

जब मैं इस प्रश्न को पोस्ट करता हूं, तो वापस वापस Mongoid इस समस्या का सामना कर रहा था। मैंने इसे here की सूचना दी, और इसे config.after_initialize ब्लॉक में कोड लपेटकर हल किया गया। यदि रेल प्रारंभ नहीं किया गया है, तो इस ब्लॉक को कभी नहीं कहा जाता है। अधिक जानकारी here

+0

यह मेरे लिए काम नहीं करता है, जो भी कोड मैंने config.after_initialize में रखा है, कंसोल मोड या रेक मोड – Alex

+0

हम्म में भी कहा जाता है, क्या आप [Mongoid's Railtie.rb] (https: // github] में समान शैली का उपयोग कर रहे हैं। com/mongoid/mongoid/ब्लॉब/मास्टर/lib/mongoid/railtie.rb)? 'Start.after_initialize'' प्रारंभकर्ता 'ब्लॉक के अंदर नेस्टेड के साथ? –

+0

मैंने अपने application.rb में config.after_initialize ब्लॉक डाला है, लेकिन कोड हर बार चल रहा है, चाहे वह रेल सी या रेल के द्वारा लॉन्च किया गया हो, या यहां तक ​​कि एक साधारण रेक – Alex

4

अपने प्रारंभकर्ता को यह ब्लॉक जोड़ें:

if defined?(Rails::Server) 
    # do something 
end 

इस वर्तमान 3.0.6 के साथ काम करना चाहिए संस्करण रेल।

+0

हम्म, क्या आप उन परिस्थितियों के बारे में अधिक कह सकते हैं जिनके अंतर्गत 'रेल :: सर्वर' परिभाषित किया गया है? मैंने इसका उपयोग करने वाले किसी भी प्लगइन को नहीं देखा है। –

+0

यह बहुत अच्छा है, लेकिन यह हेरोोकू के साथ काम नहीं कर रहा है? कोई विकल्प? – Alex

+0

मुझे कुछ सेवाओं को शुरू करने के लिए हमारे देव पर्यावरण पर उपयोग करने के लिए कुछ चाहिए लेकिन केवल सर्वर मोड में चलाने पर, रेल स्रोत कोड के माध्यम से चला गया, जब आप रेल सर्वर शुरू करते हैं तो ऑब्जेक्ट लोड हो जाता है। – dudemeister

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