जब आप require 'foo'
रूबी फ़ाइल foo.rb
फ़ाइल के लिए लोड पथ में सभी निर्देशिकाओं की जांच करता है और उसे पहले लोड करता है। यदि foo.rb
नाम की कोई फ़ाइल नहीं मिली है, और रूबीगैम्स का उपयोग करके LoadError
उठाया गया है।
आप हैं RubyGems (जो की संभावना दिया जाता है कि यह रूबी में शामिल है 1.9+) का उपयोग करते हैं, तो बजाय तुरंत ऊपर उठाने एक LoadError
सभी स्थापित रत्न देखने के लिए अगर एक एक फ़ाइल foo.rb
शामिल की खोज कर रहे हैं। यदि ऐसा मणि पाया जाता है, तो इसे लोड पथ में जोड़ा जाता है और फ़ाइल लोड होती है।
यदि आप यह सुनिश्चित करना चाहते हैं कि लाइब्रेरी का एक विशेष संस्करण उपयोग किया जाए तो आप लोड पथ को स्वयं बना सकते हैं। आम तौर पर यह ऐसा कुछ नहीं है जिसकी सिफारिश की जाती है, लेकिन यह ऐसी स्थिति है जिसे आप करना चाहते हैं।
लोड पथ में निर्देशिका जोड़ने के दो तरीके हैं। सबसे पहले आप वास्तविक कोड में यह कर सकते हैं, $LOAD_PATH
(या $:
) वैश्विक चर का उपयोग कर:
$LOAD_PATH.unshift '/path/to/the/gems/lib/'
require 'the_gem'
ध्यान दें कि आप सामान्य रूप से मणि, नहीं मणि के शीर्ष स्तर निर्देशिका के lib
dir (जोड़ना चाहते हैं असल में यह वास्तविक मणि के आधार पर भिन्न हो सकता है, और एक से अधिक डीआईआर जोड़ने की आवश्यकता है, लेकिन lib
मानक है)।
अन्य तरीके से ruby
निष्पादन करने के लिए -I
कमांड लाइन स्विच का उपयोग करने के लिए है:
$ ruby -I/path/to/the/gems/lib/ test.rb
इस तरह एक सा क्लीनर हो सकता है, आम तौर पर के रूप में आप से लोड पथ के साथ खिलवाड़ किया जा नहीं करना चाहते हैं आपके कोड के अंदर, लेकिन यदि आप लाइब्रेरी का परीक्षण कर रहे हैं तो शायद इससे कोई फर्क नहीं पड़ता।
यदि आपने मणि निर्देशिका में 'test.rb' बनाया है तो बस' आवश्यकता 'gemname'' का उपयोग करें। –
क्या आपके पास एक रत्न है? – apneadiving
यदि संभव हो तो मैं मणि निर्देशिका के बाहर test.rb बनाना चाहता हूं। और नहीं, मेरे पास एक रत्न नहीं है। – foobar