मैं एक बाहरी फ़ाइल के भीतर बाहरी फ़ाइलें लोड हो रहा हैएक वर्ग/मॉड्यूल
class A
some_definitions
end
और मैं लोड करने के लिए कि मॉड्यूल B
ताकि वर्ग A
ऊपर परिभाषित करने के लिए भेजा जा सकता है के भीतर चाहते हैं B::A
के रूप में। मैंने कोशिश की:
class B
load('path_to_external_file.rb')
end
लेकिन A
, मुख्य वातावरण में परिभाषित किया गया है B
में नहीं:
A #=> A
B.constants # => []
कैसे मैं कुछ वर्ग/मॉड्यूल के भीतर बाहरी फ़ाइलें लोड कर सकते हैं?
संपादित मैं तार के रूप में बाहरी फ़ाइलों को पढ़ने चाहिए, और Class.new{...}
के भीतर उन्हें मूल्यांकन, और include
B
भीतर उस वर्ग?
किस अंत तक? आप कक्षा ए का सीधे उपयोग क्यों नहीं कर सकते?क्या आपको इसे मॉड्यूलर करने से कुछ लाभ मिल रहा है? 'लोड' और' आवश्यकता 'वास्तव में किसी मॉड्यूल में कक्षा को लोड नहीं करेगा, वे केवल स्रोत कोड लोड करते हैं, इसलिए आपकी कक्षाएं ठीक उसी तरह परिभाषित होती हैं जैसे वे फ़ाइल में हैं। यकीन नहीं है कि आप ऐसा क्यों करना चाहते हैं? – brad
@brad क्योंकि इन बाहरी फ़ाइलों को उपयोगकर्ताओं द्वारा लिखा जाना है, और मनमाने ढंग से नामित किया जा सकता है। यदि मैं उन वर्गों को मुख्य वातावरण में परिभाषित करता हूं, तो वे नामकरण स्थान को गड़बड़ कर देंगे। – sawa
'ऑब्जेक्टस्पेस # प्रत्येक_बोजेक्ट' के माध्यम से अन्य नामस्थानों के साथ छेड़छाड़ से सावधान रहें। – Reactormonk