बस यह करें:
require_relative 'tokenizer'
यदि आप इसे रूबी फ़ाइल में रखते हैं जो उसी निर्देशिका में है tokenizer.rb
, तो यह ठीक काम करेगी, चाहे आपकी वर्तमान कार्यशील निर्देशिका (CWD) क्या हो।
यह सबसे अच्छा तरीका क्यों है की व्याख्या
अन्य उत्तर दावा करते हैं कि आपको इसका उपयोग करना चाहिए require './tokenizer'
, लेकिन यह गलत उत्तर है, क्योंकि यह केवल तभी काम करेगा जब आप अपनी रूबी प्रक्रिया को उसी निर्देशिका में चलाएंगे जो tokenizer.rb
बहुत सुंदर है। केवल इस require
तरह से उपयोग करने पर विचार करने का एकमात्र कारण है कि यदि आपको आवश्यकता होगी। रूबी 1.8 का समर्थन करते हैं, जो नहीं है require_relative
।
require './tokenizer'
इस सवाल का जवाब आज आप के लिए काम कर सकते हैं, लेकिन यह अनावश्यक रूप से तरीके हैं जिनसे आप अपने रूबी कोड चला सकते हैं सीमित करता है। कल, यदि आप अपनी फ़ाइलों को एक अलग निर्देशिका में ले जाना चाहते हैं, या बस एक अलग निर्देशिका से अपनी रूबी प्रक्रिया शुरू करना चाहते हैं, तो आपको उन सभी require
कथनों पर पुनर्विचार करना होगा ।
require
लोड पथ पर पहुंचने वाली फ़ाइलों का उपयोग करना एक अच्छी बात है और रूबी रत्न हर समय ऐसा करते हैं। लेकिन आप के लिए तर्क शुरू नहीं करना चाहिए require
एक साथ .
कुछ बहुत ही खास है जब तक आप कर रहे हैं और पता है कि तुम क्या कर रहे हैं।
जब आप ऐसा कोड लिखते हैं जो इसके पर्यावरण के बारे में धारणा बनाता है, तो आपको ध्यान से सोचना चाहिए कि क्या धारणाएं बनाना है। इस मामले में, tokenizer
फ़ाइल की आवश्यकता के लिए तीन अलग-अलग तरीके हैं , और प्रत्येक एक अलग धारणा बनाता है:
require_relative 'path/to/tokenizer'
: मान लें कि दो रूबी स्रोत फ़ाइलों के बीच सापेक्ष पथ एक ही रहेगा।
require 'path/to/tokenizer'
: मान लें कि path/to/tokenizer
लोड पथ ( $LOAD_PATH
) पर निर्देशिकाओं में से एक के अंदर है । इसके लिए आमतौर पर अतिरिक्त सेटअप की आवश्यकता होती है, क्योंकि आपको लोड पथ में कुछ जोड़ना होगा।
require './path/to/tokenizer'
: मान लेता है कि रूबी प्रक्रिया की वर्तमान कार्य निर्देशिका से संबंधित पथ tokenizer.rb
उसी के रहने वाला है।
मुझे लगता है कि ज्यादातर लोगों और अधिकांश स्थितियों के लिए, विकल्प # 1 और # 2 में की गई धारणाएं समय के साथ सच होने की अधिक संभावना है।