आप अपने रेल परियोजना में script/console
टाइप करें और $:
दर्ज करते हैं, आप एक सरणी मिल जाएगा कि रुबी लोड करने के लिए आवश्यक सभी निर्देशिकाएं शामिल हैं। इस छोटे से अभ्यास से दूर लेना यह है कि $:
एक सरणी है। ऐसा होने पर, आप unshift
विधि या <<
ऑपरेटर के साथ अन्य निर्देशिकाओं को प्रीपेड करने जैसे कार्यों को निष्पादित कर सकते हैं। जैसा कि आपने अपने कथन $:
और $LOAD_PATH
में निहित किया है वही हैं।
आपके द्वारा वर्णित त्वरित और गंदे तरीके से करने का नुकसान यह है: यदि आपके पास पहले से ही आपके बूट पथ में निर्देशिका है, तो यह स्वयं को दोहराएगा।
उदाहरण:
मेरे पास एक प्लगइन है जिसे मैंने टोडो कहा है। मेरे निर्देशिका इसलिए की तरह संरचित है:
## In vendor/plugins/todo/rails/init.rb
%w{ models controllers models }.each do |dir|
path = File.expand_path(File.join(File.dirname(__FILE__), '../lib', 'app', dir))
$LOAD_PATH << path
ActiveSupport::Dependencies.load_paths << path
ActiveSupport::Dependencies.load_once_paths.delete(path)
end
नोट कैसे मैं कोड ब्लॉक बता तार करने के लिए ब्लॉक के अंदर कार्रवाई करने के लिए:
/---vendor
|
|---/plugins
|
|---/todo
|
|---/lib
|
|---/app
|
|---/models
|---/controllers
|
|---/rails
|
|---init.rb
init.rb फ़ाइल में मैं निम्नलिखित कोड में प्रवेश किया 'मॉडल', 'नियंत्रक', और 'मॉडल', जहां मैं 'मॉडल' दोहराता हूं। (एफवाईआई, %w{ ... }
रूबी को तारों की एक सरणी रखने के लिए बताने का एक और तरीका है)। जब मैं script/console
चलाने के लिए, मैं निम्न लिखें:
>> puts $:
और मैं इस टाइप करें ताकि यह आसान है स्ट्रिंग में सामग्री पढ़ने की। उत्पादन मैं मिलता है:
...
...
./Users/Me/mySites/myRailsApp/vendor/plugins/todo/lib/app/models
./Users/Me/mySites/myRailsApp/vendor/plugins/todo/lib/app/controllers
./Users/Me/mySites/myRailsApp/vendor/plugins/todo/lib/app/models
आप देख सकते हैं, हालांकि यह रूप में सरल एक उदाहरण एक परियोजना मैं वर्तमान पर काम कर रहा हूँ का उपयोग करते समय मैं बना सकता है, अगर आप सावधान नहीं कर रहे हैं त्वरित और गंदी तरह से बार-बार पथ का नेतृत्व करेंगे। लंबा रास्ता बार-बार पथों की जांच करेगा और सुनिश्चित करेगा कि वे नहीं होते हैं।
यदि आप एक अनुभवी रेल प्रोग्रामर हैं, तो शायद आपके पास क्या हो रहा है और संभवतः पथ दोहराने की गलती नहीं करने का बहुत अच्छा विचार है। यदि आप नौसिखिया हैं, तो मैं लंबे समय तक जाऊंगा जबतक कि आप वास्तव में समझ नहीं लेते कि आप क्या कर रहे हैं।
एक ** थोड़ा ** वर्बोज़ एक के कम वर्बोज़ संस्करण है:। 'File.expand_path (File.dirname (__ फ़ाइल __)) {नल | pwd | $ LOAD_PATH.unshift (pwd) जब तक $ LOAD_PATH.include? (Pwd)} ' –
" जब तक "खंड के बारे में कैसे? उपर्युक्त दोनों कैसे समकक्ष हो सकते हैं? – inger
किसी ऐसे व्यक्ति के रूप में जो यह समझने की कोशिश करने के लिए आया कि इसका उपयोग कैसे किया जाए, यह सुपर गुप्त है। मैं नहीं देखता कि उदाहरणों पर निर्देशिका का नाम कहां से आ रहा है। अगर कोई यह स्पष्ट कर सकता है तो मैं सराहना करता हूं। – SlySherZ