2011-09-26 10 views
6

मुझे लगता है कि मैं की आवश्यकता होती है और require_dependency (How are require, require_dependency and constants reloading related in Rails? से) के बीच अंतर को समझते हैं।रेल 3 अनुप्रयोगों में requ_dependency का उपयोग करने के प्रदर्शन प्रभाव क्या हैं?

हालांकि, मैं सोच रहा हूँ अगर मैं वहाँ विभिन्न तरीकों से कुछ का उपयोग क्या होना चाहिए (http://hemju.com/2010/09/22/rails-3-quicktip-autoload-lib-directory-including-all-subdirectories/ और Best way to load module/class from lib folder in Rails 3? देखें) लोड हो रहा है सभी फाइलों को पाने के लिए तो हम:

  1. require_dependency उपयोग करने के लिए की जरूरत नहीं है सभी आवेदन में जगह और
  2. विकास सर्वर को पुनः आरंभ करने की जरूरत नहीं है के ऊपर जब lib निर्देशिका परिवर्तन में फ़ाइलों।

ऐसा लगता है कि विकास प्रदर्शन थोड़ा प्रभावित होगा, जो कि मेरे लिए एक बड़ा सौदा नहीं है। उत्पादन वातावरण में प्रदर्शन को कैसे प्रभावित किया जाएगा? क्या आप सभी फ़ाइलों को आम तौर पर केवल एक बार लोड हो जाते हैं यदि आप उत्पादन में हैं? क्या कोई बेहतर तरीका है जिसे मैं नहीं देख रहा हूं?

आप कुछ संसाधनों जहां मैं इस बारे में और अधिक पढ़ सकते हैं शामिल हो सकते हैं, तो वे बहुत सराहना की जाएगी। कुछ ब्लॉग पोस्टों ने कहा कि यह व्यवहार हाल ही में लीग/* फाइलों के ऑटोरेलोडिंग के लिए रेल 3 के साथ बदल गया है और यह विवादास्पद था, लेकिन मुझे इन चर्चाओं के लिए कोई लिंक नहीं मिला। पेशेवरों/विपक्षों पर विचार करने के लिए यह सहायक होगा। धन्यवाद!

उत्तर

4

कोड reloader उत्पादन में डिफ़ॉल्ट रूप से अक्षम है। इसलिए यदि आप किसी फ़ाइल के शीर्ष पर requ_dependency को कॉल कर रहे हैं तो इसे केवल एक बार निष्पादित किया जा रहा है।

रेल 3 परिवर्तन आप का उल्लेख वास्तव में छोटा है। आप आम तौर पर Foo कॉल कर सकते हैं और यह app/models/foo.rb से स्वचालित रूप से लोड किया जाएगा। इसे lib/foo.rb से भी लोड किया जा सकता है। (ये निर्देशिका app/models और lib को ऑटोलोड लोड कहा जाता है।) रेल टीम ने तीसरे संस्करण में ऑटोलोड लोड से lib को हटाने का निर्णय लिया। आप अभी भी इसे वापस रख सकते हैं। लेकिन इसे कम से कम बदले में बदलकर और परियोजना-विशिष्ट फाइलों में कम से कम छोड़ने के लिए प्रोत्साहित किया जाता है। यदि आपके पास ऐसा कुछ है जो ऐप/मॉडल या ऐप/नियंत्रकों जैसे किसी भी डिफ़ॉल्ट ऐप उप-निर्देशिकाओं से संबंधित नहीं है, तो आपको इसे lib में डालना नहीं है। आप अपनी खुद की उपनिर्देशिका जोड़ सकते हैं। उदाहरण के लिए, मेरे पास app/presenters है। यदि आप उस पर अधिक जानकारी चाहते हैं तो पुराने अंक ट्रैकर पर a discussion है।

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