require blaba.rb
अपने डिफ़ॉल्ट मणि पथ लिए खोज कर रहा है फ़ाइल है, जो गहरे लाल रंग का संस्करण प्रयोग कर रहे पर निर्भर करता है लोड करने के लिए। उदाहरण के लिए RVM $HOME/.rvm/rubies/...
में खोज करेगा जबकि सिस्टम विस्तृत रूबी वितरण के डिफ़ॉल्ट पथ में खोज करेगा। ध्यान दें कि यह वह जगह है जहां रत्न स्थित हैं, लेकिन आप उसी लाइब्रेरी में मैन्युअल रूप से mylibrary.rb
कह सकते हैं और इसे अपने किसी भी प्रोग्राम में उपयोग कर सकते हैं। हालांकि, यह करने के लिए एक भयानक बात है, यह रत्न बनाने और उन्हें अपने सिस्टम में स्थापित करने के लिए एक बहुत साफ प्रक्रिया है।
require ./blabla.rb
एक फ़ाइल है कि आपके बैठी है कार्यशील निर्देशिका लोड करता है। आप require /home/username/library/myproject/models/sample.rb
जैसे पूर्ण पथ जोड़ सकते हैं। यह सिर्फ उसी के बारे में काम करेगा। यूनिक्स जैसी दुनिया में ./
संकेत का अर्थ है वर्तमान निर्देशिका। रेलवे मॉडल i.e users.rb
irb
या pry
में लोड करने और इसके साथ काम करने के लिए अक्सर इस समाधान का उपयोग irb
में किया जाता है। एक खोल वातावरण में आपको एक उदाहरण देता करने के लिए (यदि आप यूनिक्स के गोले के साथ परिचित हैं, तो आप यह पता लगा लेंगे):
GreyJewel ~ » ls myports.txt
myports.txt
GreyJewel ~ » ls ./myports.txt
./myports.txt
तीसरे समाधान require File.expand_path('../sample.rb', __FILE__)
, कार्यक्रमों में प्रयोग किया जाता है यह स्पष्ट रूप से एक पूर्ण बनाता है क्योंकि पथ एक एंकर के रूप में उपयोग करने वाली निर्देशिका जो लाइन को पकड़ने वाली फ़ाइल है, जो require ./sample.rb
की तुलना में अधिक सुरक्षित दृष्टिकोण है। ध्यान दें कि जब आप रूबी फ़ाइल लोड करते हैं, तो आप फ़ाइल एक्सटेंशन .rb
को छोड़ सकते हैं।
आशा है कि यह स्थिति को थोड़ा सा स्पष्ट करे।
स्रोत
2013-10-29 18:38:30
धन्यवाद। तीसरा समाधान दूसरा से अधिक सुरक्षित क्यों है? – 0xSina
क्योंकि वह विधि किसी विशिष्ट फ़ाइल को 'पूर्ण पथ' देता है जो हमेशा 'रिश्तेदार पथ' की तुलना में यूनिक्स पर्यावरण पर सुरक्षित होती है। 'Irb' पर दोनों को आज़माएं, आप पाएंगे कि वे कैसे काम करते हैं। –