मैं एक मॉड्यूल समेत एक कक्षा (जो एक प्लगइन में है) का विस्तार कर रहा हूं, यह प्रारंभकर्ता में किया जाता है।प्रारंभकर्ता से कक्षा का विस्तार कैसे करें और इसे विकास पर्यावरण में पुनः लोड करें?
require 'qwerty/core/user'
User.send :include, Qwerty::Core::Extensions::User
हालांकि हर अनुरोध से पहले विकास में (और पुनः लोड के बाद! कंसोल में कहा जाता है) सभी मॉडलों पुनः लोड कर रहे हैं, बल्कि इसलिए initializers फिर से चलाने के नहीं कर रहे हैं मॉड्यूल शामिल नहीं है। 'गायब हिस्सों' के साथ एक मॉडल छोड़ना।
क्योंकि मॉडल प्लगइन में है, इसलिए कक्षा में सीधे कोड शामिल करना बुद्धिमान नहीं लगता है जो सामान्य दृष्टिकोण होगा।
अभी के लिए मैंने बस पहले_फिल्टर जोड़ा है जिसमें विकास वातावरण में मॉड्यूल शामिल है। लेकिन मेरे पास कॉपी/पेस्ट है और शुरुआती और एप्लिकेशन नियंत्रक में डुप्लिकेट कोड है।
# Class extensions in initalizers are over-writtern each request
def development_loading
if RAILS_ENV == 'development'
User.send :include, Qwerty::Core::Extensions::User
end
end
क्या कोई बेहतर तरीका है?
एक पक्ष टिप्पणी प्लगइन मेरा है के रूप में, तो मैं क्यों आप initializers का उपयोग कार्यक्षमता शामिल करने के लिए कि यह करने के लिए कोड जोड़ सकते हैं, लेकिन एक्सटेंशन मॉड्यूल में आयोजित हमेशा मौजूद नहीं हो सकता है ...
यह मेरे लिए काम करता था, लेकिन application.rb (रेल 3.0.20) में, पर्यावरण नहीं। आरबी – tekniklr
यह रेल इंजन में इंजन.आरबी में जोड़ने के लिए रेल 4 में पूरी तरह से काम करता है। धन्यवाद! –