दिलचस्प पोस्ट
सीएसएस केंद्र प्रदर्शन इनलाइन ब्लॉक? एक गतिविधि और अन्य सभी टुकड़े पुनरावर्तक में पुनरावर्तक कैसे एक वस्तु में आंतरिक वस्तुओं / संपत्ति पर पुनरावृत्त करने के लिए स्ट्रिंग को डीकोड करने का सही तरीका क्या है जिसमें इसमें विशेष HTML संस्थाएं हैं? जावा में डिफ़ॉल्ट कन्स्ट्रक्टर और उत्तराधिकार ऑटोमैपर – कैसे संपत्ति सेटर्स के बजाय कन्स्ट्रेटर मापदंडों को मैप करने के लिए Google क्लाउड मेसेजिंग – कभी-कभी नेटवर्क स्थिति बदल जाने तक संदेश प्राप्त नहीं होते XmlWriter एक फ़ाइल के बजाय एक स्ट्रिंग को लिखने के लिए एंड्रॉइड सेट एकाधिक अलार्म PHP में फ़ाइल की सामग्री-प्रकार कैसे प्राप्त करें? क्या पृष्ठ का मेटा-टैग बदलने के लिए जावास्क्रिप्ट का उपयोग करना संभव है? नाम क्या है, और यह कैसे काम करता है? जूनिट यूनिट टेस्ट के लिए जेवीएम पैरामीटर कैसे सेट करें? Php.ini फ़ाइल को कैसे खोजें (xampp)

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

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

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

वेब के समाधान से एकत्रित समाधान "रूबी 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 घोषणापत्र के सापेक्ष है, न कि वर्तमान कार्यशील दिर

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