हालांकि यह कुछ प्रश्न उठाता है जैसे रेल और एप्लिकेशन से संबंधित कोड लोड किए बिना परीक्षण कैसे चलता है?
परीक्षण मांग पर आवश्यक कोड लोड करता है क्योंकि यह इसका उपयोग करने का प्रयास करता है। तो उदाहरण के लिए कुछ कोड लाइन पर परीक्षण Active::Record
कक्षा का उपयोग करना चाहता है। eager_load
पर false
पर सेट करें इस कक्षा को अभी तक आवश्यक नहीं है, जो एक वेनिला रूबी प्रोग्राम पर अपवाद का कारण बन जाएगा। रेल परियोजना के भीतर हालांकि परीक्षण के लिए परीक्षण पर Active::Record
की आवश्यकता होगी। तो अंत में एक एकल परीक्षण तेजी से चलता है, क्योंकि केवल आवश्यक कोड भागों की आवश्यकता होती है।
इस तकनीक eager_loading
के विपरीत है और यह autoloading
क्या रेल और आवेदन संबंधित है कोड है कि उत्सुक लोड किया जा रहा है कहा जाता है?
https://github.com/rails/rails देखें। यह कर्मचारियों का एक गुच्छा है।
क्या ये सभी कक्षाएं और उनके उप-वर्ग उत्सुक हैं?
हाँ
eager_load का उपयोग करने का स्पष्ट नुकसान = में विकास या परीक्षण वातावरण झूठी क्या हैं?
विकास वातावरण में यह तेजी से बूट समय प्राप्त करता है (वसंत जैसे प्रीलोडर का उपयोग करते समय उपेक्षित) के रूप में यह एक लाभ और सर्वोत्तम अभ्यास है। शायद cache_classes=false
विकल्प के साथ परिवर्तनों को पुनः लोड करने के लिए भी आसान है, क्योंकि आपके पास पुनः लोड करने के लिए कम है (केवल एक धारणा)।
परीक्षण वातावरण में कभी-कभी आप eager_loading=false
का उपयोग नहीं कर सकते हैं यदि आप कुछ कोड मीट्रिक कोड कवरेज या स्टाइल चेक करने का अनुमान लगाना चाहते हैं। जैसे simple_cov
आपको परीक्षण शुरू करने से पहले सभी कोड eager_load करने की आवश्यकता है।
और सामान्य रूप से ऐसा हो सकता है कि कुछ लिबररी का उपयोग eager_loading के साथ नहीं किया जा सकता क्योंकि यह कक्षा को लोड करने पर कुछ प्रारंभिकता है जो इसे पहले से ही उपलब्ध कराने से पहले उपलब्ध होना चाहिए। हालांकि यह एक पिछला मामला है, यह कहकर, यह हमारे साथ neo4j.rb मणि
स्रोत
2015-01-08 08:53:56
रूबी का ऑटोलोड लोड कोड से उपयोग करने के लिए काफी अलग है विकास में (हालांकि यह फ्रेमवर्क कोड के लिए प्रयोग किया जाता है) –