संक्षिप्त विवरण: rbenv आपके वातावरण में हुक करके काम करता है PATH
। अवधारणा सरल है, लेकिन शैतान विवरण में है; नीचे पूर्ण स्कूप।
सबसे पहले, rbenv बनाता शिम्स सभी आदेशों के लिए ( ruby
, irb
, rake
, gem
और इतने पर) रूबी के अपने सभी स्थापित संस्करणों में। इस प्रक्रिया को रिहैशिंग कहा जाता है । हर बार जब आप रूबी का एक नया संस्करण स्थापित करते हैं या एक रत्न स्थापित करते हैं जो एक कमांड प्रदान करता है, rbenv rehash
यह सुनिश्चित करने के लिए चलाएं कि किसी भी नए कमांड को शिम किया गया है।
ये शिम एक ही डायरेक्टरी में ( ~/.rbenv/shims
डिफ़ॉल्ट रूप से) रहते हैं। Rbenv का उपयोग करने के लिए, आपको केवल शिम निर्देशिका को अपने सामने रखने की आवश्यकता है PATH
:
export PATH="$HOME/.rbenv/shims:$PATH"
फिर किसी भी समय आप ruby
कमांड लाइन से चलते हैं , या एक स्क्रिप्ट चलाते हैं जिसका शेबंग पढ़ता है #!/usr/bin/env ruby
, आपका ऑपरेटिंग सिस्टम ~/.rbenv/shims/ruby
पहले मिल जाएगा और किसी भी अन्य ruby
निष्पादन योग्य के बजाय इसे चलाएं जो आपने स्थापित किया हो।
प्रत्येक शिम एक छोटी बैश स्क्रिप्ट है जो बदले में चलती है rbenv exec
। तो आपके मार्ग में रेंबव के साथ, irb
के बराबर है rbenv exec irb
, और ruby -e "puts 42"
के बराबर है rbenv exec ruby -e "puts 42"
।
rbenv exec
आदेश आंकड़े बाहर रूबी के किस संस्करण उपयोग करना चाहते हैं, तो उस संस्करण के लिए इसी आदेश चलाता है। ऐसे:
- यदि
RBENV_VERSION
पर्यावरण चर सेट किया गया है, तो इसका मान रूबी के संस्करण का उपयोग करने के लिए निर्धारित करता है।
- यदि वर्तमान कार्यशील निर्देशिका में
.rbenv-version
फ़ाइल है, तो इसकी सामग्री का उपयोग RBENV_VERSION
पर्यावरण चर को सेट करने के लिए किया जाता है ।
- यदि
.rbenv-version
वर्तमान निर्देशिका में कोई फ़ाइल नहीं है , तो rbenv प्रत्येक .rbenv-version
फ़ाइल के मूल फ़ाइल को तब तक खोजता है, जब तक कि वह आपके फ़ाइल सिस्टम की जड़ को हिट न कर दे। यदि कोई पाया जाता है, तो इसकी सामग्री का उपयोग RBENV_VERSION
पर्यावरण चर को सेट करने के लिए किया जाता है ।
- यदि
RBENV_VERSION
अभी भी सेट नहीं किया गया है, तो rbenv ~/.rbenv/version
फ़ाइल की सामग्री का उपयोग करके इसे सेट करने का प्रयास करता है ।
- यदि कोई संस्करण कहीं भी निर्दिष्ट नहीं किया गया है, तो rbenv मान लेता है कि आप "सिस्टम" रूबी का उपयोग करना चाहते हैं - यानी अगर rbenv आपके रास्ते में नहीं थे, तो जो भी संस्करण चलाया जाएगा।
(आप rbenv local
कमांड के साथ एक परियोजना-विशिष्ट रूबी संस्करण सेट कर सकते हैं , जो .rbenv-version
वर्तमान निर्देशिका में एक फ़ाइल बनाता है । इसी तरह, फ़ाइल को निर्दिष्ट rbenv global
करता है ~/.rbenv/version
।)
एक RBENV_VERSION
पर्यावरण चर के साथ सशस्त्र , rbenv ~/.rbenv/versions/$RBENV_VERSION/bin
आपके सामने जोड़ता है PATH
, फिर कमांड और तर्कों को निष्पादित करता है rbenv exec
। देखा!
हुड के तहत वास्तव में क्या होता है, इस पर पूरी तरह से नज़र रखने के लिए, RBENV_DEBUG=1
रूबी कमांड को सेट करने और चलाने का प्रयास करें । हर बैश कमांड कि rbenv रन आपके टर्मिनल को लिखा जाएगा।
अब, रेंबव केवल स्विचिंग संस्करणों के साथ संबंध रखता है, लेकिन प्लगइन्स का एक संपन्न पारिस्थितिकी तंत्र आपको रूबी को स्थापित करने से लेकर आपके पर्यावरण को स्थापित करने , "जवाहरात" और यहां तक कि स्वचालित bundle exec
करने तक सब कुछ करने में मदद करेगा ।
मुझे पूरा यकीन नहीं है कि रूबी संस्करणों को स्विच करने के लिए आईआरसी के समर्थन का क्या करना है, और आरबनेव को सरल और समझ में आता है कि समर्थन की आवश्यकता नहीं है। लेकिन क्या आपको कभी मदद की ज़रूरत है, मुद्दा ट्रैकर और ट्विटर केवल कुछ ही क्लिक दूर हैं।
प्रकटीकरण: मैं rbenv, रूबी-बिल्ड, और rbenv-var का लेखक हूं।