दिलचस्प पोस्ट
डायनेमिक ऊंचाई वेबसाइट के साथ भी तल पर पाद लेख कैसे रखा जाए जब Emacs # फ़ंक्शन सिंटैक्स का उपयोग किया जाना चाहिए? कैसे मैं स्थानीय समय को यूटीसी में पायथन में बदल सकता हूं? सी ++ 11 में यादृच्छिक संख्या पीढ़ी, उत्पन्न करने के तरीके, वे कैसे काम करते हैं? वस्तु और उदाहरण के बीच अंतर सी बुरा अभ्यास में लचीला सरणी के सदस्यों का उपयोग कर रहे हैं? "अकाउंटिंग" प्रारूप में नकारात्मक संख्या की प्रसंस्करण Php में लाइन द्वारा एक फ़ाइल लाइन कैसे पढ़ा जाए JSF + प्राइमफैसेस: `अपडेट` विशेषता घटक को अपडेट नहीं करता है ReferenceError: फ़ायरफ़ॉक्स में घटना को परिभाषित नहीं किया गया है उद्देश्य सी में विधि जलसेवा के खतरों क्या हैं? JQuery का उपयोग कर चेकबॉक्स चुनने के लिए तालिका पंक्तियों पर क्लिक करें पायथन पंडस की गणना और विशिष्ट परिस्थितियों का मूल्यांकन JSLint: नियंत्रण टिप्पणियां (चयनात्मक अनदेखा) जीएनयू रिक्त स्थान के साथ फ़ाइल नाम को संभाल सकता है?

रूबी 1.9.2 को LOAD_PATH से "।" क्यों हटाता है, और क्या विकल्प है?

रुबी 1.9.2 के नवीनतम परिवर्तनों को अब वर्तमान निर्देशिका नहीं बनाते हैं . आपके LOAD_PATH का हिस्सा मेरे पास राकफील्स की एक गैर-तुच्छ संख्या है जो मानते हैं कि . LOAD_PATH का हिस्सा है, इसलिए यह उन्हें तोड़ दिया (उन्होंने रिपोर्ट की "ऐसी किसी फ़ाइल को लोड करने के लिए" सभी को उस प्रोजेक्ट पथ के आधार पर बयानों की आवश्यकता होती है)। क्या ऐसा करने के लिए कोई विशिष्ट औचित्य था?

एक तय करने के लिए, $: << "." जोड़ना $: << "." हर जगह काम करता है, लेकिन अविश्वसनीय हैक लगता है और मैं ऐसा नहीं करना चाहता। मेरे Rakefiles 1.9.2+ संगत बनाने का पसंदीदा तरीका क्या है?

Solutions Collecting From Web of "रूबी 1.9.2 को LOAD_PATH से "।" क्यों हटाता है, और क्या विकल्प है?"

इसे "सुरक्षा" जोखिम समझा गया था

आप इसे पूर्ण पथ का उपयोग करके इसके आसपास प्राप्त कर सकते हैं

 File.expand_path(__FILE__) et al 

या कर रही है

 require './filename' (ironically). 

या का उपयोग कर

 require_relative 'filename' 

अगर आईआरबी का उपयोग करना

 $irb -I . 

दो कारण हैं:

  • मजबूती और
  • सुरक्षा

दोनों ही अंतर्निहित सिद्धांत पर आधारित होते हैं: सामान्य तौर पर, आप नहीं जानते कि वर्तमान निर्देशिका क्या है, जब आपका कोड चलाया जाता है। इसका मतलब है कि, जब आपको एक फाइल की आवश्यकता होती है और वर्तमान निर्देशिका में होने पर निर्भर करती है, तो आपको यह नियंत्रित करने का कोई तरीका नहीं है कि उस फाइल में भी हो, या क्या वह फाइल है जो आप वास्तव में वहां होने की उम्मीद करते हैं।

जैसा कि दूसरे जवाब देते हैं, यह एक सुरक्षा जोखिम है क्योंकि . आपके लोड पथ में मौजूदा कार्य निर्देशिका Dir.pwd को संदर्भित करता है, न कि वर्तमान फ़ाइल लोड की गई निर्देशिका की। इसलिए जो भी आपकी स्क्रिप्ट को निष्पादित कर रहा है, उसे केवल cd आईएनजी द्वारा दूसरी निर्देशिका में बदल सकते हैं। अच्छा नही!

मैं एक वैकल्पिक के रूप में __FILE__ से निर्मित पूर्ण पथ का उपयोग कर रहा हूं।

 require File.expand_path(File.join(File.dirname(__FILE__), 'filename')) 

require_relative विपरीत, यह रूबी 1.8.7 के साथ पिछड़े संगत है।

require_relative 'file_to_require' उपयोग करें

1.8.7 में आवश्यक / संबद्ध कार्य करने के लिए इसे अपने कोड में फेंको:

 unless Kernel.respond_to?(:require_relative) module Kernel def require_relative(path) require File.join(File.dirname(caller.first), path.to_str) end end end 

'।' यूनिक्स दुनिया में आपके रास्ते में लंबे समय तक एक बुरी चीज माना जाता है (देखें, उदाहरण के लिए, http://www.faqs.org/faqs/unix-faq/faq/part2/section-13.html )। मैं मानता हूँ कि रूबी लोगों को ऐसा करने के बारे में ज्ञान नहीं दिया गया है।

जब तक मुझे कुछ चीजों का एहसास नहीं हुआ तब तक मैं यह एक घनिष्ठ परिवर्तन हो पाया।

आप अपने .profile (यूनिक्स) में RUBYLIB सेट कर सकते हैं और पहले के साथ जीवन के साथ आगे बढ़ सकते हैं:

export RUBYLIB="."

लेकिन जैसा कि ऊपर बताया गया है, ऐसा करने के लिए लंबे समय से इसे असुरक्षित माना गया है।

बहुसंख्य मामलों के लिए आप अपने रूबी स्क्रिप्ट को 'प्रीपेड' के साथ बुलाकर समस्याओं से बच सकते हैं। ' जैसे ./scripts/server

जर्ग डब्ल्यू मित्ग्ग के रूप में बताया गया है, मुझे लगता है कि आप क्या उपयोग करना चाहते हैं जो require_relative इसलिए आपको जो फ़ाइल की आवश्यकता होती है वह स्रोत की require घोषणापत्र के सापेक्ष है, न कि वर्तमान कार्यशील दिर

आपकी निर्भरता आपके रेक बिल्ड फाइल के रिश्तेदार होने चाहिए।