मान लीजिए कि मैं अपना खुद का ताजा रूबी संकलित करता हूं (एमआरआई 1.9.3), डिफ़ॉल्ट LOAD_PATH क्या है, और इसकी गणना कैसे की जाती है?डिफ़ॉल्ट रूबी LOAD_PATH निर्धारित कैसे किया जाता है?
उत्तर
मेरी मशीन पर, प्रारंभिक लोड पथ इस तरह दिखता है: grep
साथ
$ ruby -e 'puts $LOAD_PATH'
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.8.0
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby/1.9.1
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.8.0
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin10.8.0
सशस्त्र, रूबी स्रोत की जांच definition of ruby_initial_load_paths[]
in version.c
की ओर जाता है (इस रूबी 1.9.3 पर है)। इनमें से पहला लागू होता है (न तो NO_INITIAL_LOAD_PATH
या RUBY_SEARCH_PATH
सेट किया गया है) RUBY_SITE_LIB2
है। कि परिभाषा we see ऊपर परिभाषित करता है को देखते हुए:
#define RUBY_SITE_LIB2 RUBY_SITE_LIB "/"RUBY_LIB_VERSION
और in turn: परिभाषित करता है की इस श्रृंखला के बाद
#define RUBY_SITE_LIB RUBY_LIB_PREFIX"/site_ruby"
, यह स्पष्ट हो जाता है कि इस से ऊपर मेरी लोड पथ में पहली प्रविष्टि से मेल खाती है। इसी प्रकार अन्य स्थिरांक जो इस चर में जाते हैं, अन्य लोड पथ प्रविष्टियों से मेल खाते हैं।
ruby_initial_load_paths[]
परिवर्तनीय ruby_init_loadpath_safe()
in ruby.c
में उपयोग किया जाता है, जहां वास्तविक लोड पथ प्रक्रिया के लिए स्थापित किया जाता है।
तो आपके प्रश्न का उत्तर यह है कि प्रारंभिक लोड पथ कुछ #define
एस के साथ संकलित समय पर सेट किया गया है, निर्माण के अनुसार कॉन्फ़िगर किया गया है।
आपका संकलन * nix आधारित सिस्टम पर एक lib निर्देशिका बनाने यह आम तौर पर है
/usr/lib/ruby/X.Y.Z
X.Y.Z अपने माणिक सी एपीआई संस्करण की संस्करण संख्या का प्रतिनिधित्व करता है।
नहीं, ऐसा नहीं है, संस्करण संख्या रूबी सी एपीआई संस्करण का प्रतिनिधित्व करती है –