2010-05-20 5 views
5

मेरे पास RAILS_ROOT/lib फ़ोल्डर के अंदर स्थित एक कक्षा है, जिसका उपयोग मैं अपने सहायकों में से एक में करता हूं, और यह विकास में बहुत अच्छा काम करता है।रेल - RAILS_ROOT/lib के अंदर कोई मॉडल उत्पादन मोड में क्यों उपलब्ध नहीं होगा?

जब मैं उत्पादन करने के लिए स्विच, आवेदन एक NameError (uninitialized constant SomeHelper::SomeClass) फेंकता है, और मैं सहायक में मैन्युअल रूप से इसे लोड करने के लिए है:

load "#{Rails.root}/lib/some_class.rb" 

module SomeHelper 
    def some_method 
    sc = SomeClass.new 
    # blah 
    end 
end 

मैं यह धारणा थी कि सब कुछ अंदर RAILS_ROOT/lib/* उपलब्ध होना चाहिए ऐप के लिए सब कुछ - क्या ऐसा कुछ है जिसे मुझे प्रोड मोड में करने के लिए कॉन्फ़िगर करने की आवश्यकता है? धन्यवाद।

उत्तर

1

जब आप SomeHelper फोन :: SomeClass, रेल 'autoloading तंत्र lib पर फ़ाइल को लोड करने की कोशिश करेंगे/some_helper/some_class.rb

रेल lib में सब कुछ लोड नहीं होगा/*, यह केवल लोड करने की कोशिश करेंगे कॉन्स्टमेलिंग होने पर फ़ाइलें।

1

आपको विकास और उत्पादन पर्यावरण के बीच कॉन्फ़िगरेशन सेटिंग्स के बीच मतभेदों की जांच करने की आवश्यकता हो सकती है: config/environments/production.rb और config/environments/development.rb

रेल प्रारंभिक दिनचर्या के दौरान, load_plugins() कहा जाता है जो config.plugin_paths में सभी प्लगइन लोड करता है। तुम्हें पता है, जो आपके फ़ोल्डर lib/ शामिल किया गया है सुनिश्चित करने की आवश्यकता की तरह

config.plugin_paths = [ "# {RAILS_ROOT}/lib/प्लगइन को", "# {RAILS_ROOT}/विक्रेता/प्लगइन्स"]

में

config.plugin_paths के अतिरिक्त, आप उन प्लगइन्स का नाम भी दे सकते हैं जिन्हें config.plugins में लोड किया जाना चाहिए। यदि उस चर में :all है तो सभी प्लगइन्स (पाए गए) लोड हो जाएंगे।

(वैसे: विन्यास सेटिंग्स के लिए या तो पर्यावरण config/environment.rb में जाना चाहिए बराबर वातावरण के बीच किसी भी मतभेद संबंधित .rb फाइलों में सेटिंग के कारण कर रहे हैं।।)

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