असल में, ऐसा कुछ भी नहीं है जो आप कर सकते हैं। यह रूबी में अच्छा अभ्यास, इस कारण के लिए शीर्ष स्तर के नाम स्थान में विशिष्ट नाम का उपयोग करने ठीक है, और आप सिर्फ दो पुस्तकालयों कि कि अभ्यास का उल्लंघन पर ठोकर हुआ।
एक बात आपको Kernel#require
के बजाय Kernel#load
का उपयोग करना है। Kernel#load
एक वैकल्पिक बूलियन तर्क लेता है, जो इसे अज्ञात मॉड्यूल के भीतर फ़ाइल का मूल्यांकन करने के लिए बताएगा। हालांकि, ध्यान रखें कि यह सुरक्षित कोई रास्ता नहीं में है: यह शीर्ष स्तर के नाम स्थान (module ::PDF
की तरह कुछ का उपयोग) और इस तरह गुमनाम मॉड्यूल को तोड़ने में स्पष्ट पुट सामान के लिए संभव पूरी तरह से है।
यह भी ध्यान रखें एपीआई वास्तव में भद्दा है कि: load
बस true
या false
, require
जैसे करता है देता है। (वास्तव में, के बाद से load
हमेशा लोड हो जाए, यह हमेशा रिटर्न true
।) वहाँ कोई रास्ता नहीं है वास्तव में गुमनाम मॉड्यूल पर प्राप्त करने के लिए है। आपको मूल रूप से हाथ से ObjectSpace
से इसे पकड़ना होगा। ओह, और जाहिर है, कुछ भी नहीं है वास्तव में गुमनाम मॉड्यूल का संदर्भ के बाद से, यह कचरा-एकत्र हो जाएगा, इसलिए आप केवल को ObjectSpace
की आंत में चारों ओर चप्पा चप्पा छान मारना मॉड्यूल लगता है नहीं है, आप भी दौड़ करने के लिए है कचरा इकट्ठा करने वाला।
कभी कभी, मैं चाहता हूँ रूबी Newspeak, मानक ML या रैकेट की तरह एक उचित मॉड्यूल प्रणाली था।
स्रोत
2010-12-21 04:05:04
+1 अच्छा सवाल। यह एक बुरा समस्या है कि मेरे पास एक आसान फिक्स नहीं है। यह सवाल पूछता है कि आपको पीडीएफ पढ़ने के लिए दोनों की जरूरत क्यों है, लेकिन मुझे यकीन है कि आपके पास आपके कारण हैं। – EnabrenTane
यह क्या त्रुटि संदेश देता है? –
यह संभवतः एक पुनर्लेखन करना संभव है, यह देखते हुए कि आप स्थानीय रूप से अपने स्वयं के रत्नों को बना और स्थापित कर सकते हैं। –