लघु स्पष्टीकरण: rbenv आपके पर्यावरण के PATH
में हुक करके काम करता है। अवधारणा सरल है, लेकिन शैतान विवरण में है; नीचे पूरा स्कूप।
पहले, rbenv सभी आदेश (ruby
, irb
, rake
, gem
और इसी तरह) रूबी के अपने सभी स्थापित संस्करणों में के लिए शिम्स पैदा करता है। इस प्रक्रिया को rehashing कहा जाता है। हर बार जब आप रूबी का एक नया संस्करण स्थापित करते हैं या एक कमांड प्रदान करते हुए एक मणि इंस्टॉल करते हैं, तो यह सुनिश्चित करने के लिए कि कोई भी नया आदेश shimmed है, rbenv rehash
चलाएं।
ये शिम्स एक ही निर्देशिका में रहते हैं (डिफ़ॉल्ट रूप से ~/.rbenv/shims
)। rbenv का उपयोग करने के लिए, आप की जरूरत ही की परतें निर्देशिका अपने PATH
के सामने से जोड़ें:
export PATH="$HOME/.rbenv/shims:$PATH"
तो किसी भी समय आप कमांड लाइन से ruby
चलाते हैं, या एक स्क्रिप्ट जिसका मामला पढ़ता #!/usr/bin/env ruby
चलाने के लिए, अपने ऑपरेटिंग सिस्टम मिलेगा ~/.rbenv/shims/ruby
पहले और किसी अन्य ruby
निष्पादन योग्य के बजाय इसे चलाएं, जिसे आपने इंस्टॉल किया हो।
प्रत्येक शिम एक छोटी बैश स्क्रिप्ट है जो बदले में rbenv exec
चलाती है। तो आपके पथ में rbenv के साथ, 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 मानता है कि आप "सिस्टम" रूबी-i.e का उपयोग करना चाहते हैं। यदि आपके पथ में आरबीएनवी नहीं थे तो जो भी संस्करण चलाया जाएगा।
एक RBENV_VERSION
साथ
सशस्त्र (आप rbenv local
आदेश है, जो वर्तमान निर्देशिका में एक .rbenv-version
फ़ाइल बनाता है के साथ एक परियोजना विशेष रूबी संस्करण सेट कर सकते हैं। इसी तरह, rbenv global
आदेश को संशोधित करता ~/.rbenv/version
फ़ाइल।) पर्यावरण चर, rbenv ~/.rbenv/versions/$RBENV_VERSION/bin
को आपके PATH
के सामने जोड़ता है, फिर rbenv exec
पर दिए गए आदेश और तर्क निष्पादित करता है। देखा!
हुड के नीचे क्या होता है, इसकी पूरी तरह से देखने के लिए, RBENV_DEBUG=1
सेट करने और रूबी कमांड चलाने का प्रयास करें। प्रत्येक बैश कमांड जो rbenv रन आपके टर्मिनल पर लिखा जाएगा।
अब, rbenv बस स्विचिंग संस्करणों के साथ संबंध है, लेकिन प्लग इन की एक संपन्न पारिस्थितिकी तंत्र आप installing Ruby से setting up your environment, managing "gemsets" और यहां तक कि automating bundle exec
लिए सब कुछ करने के लिए मदद मिलेगी।
मुझे यकीन नहीं है कि रूबी संस्करणों को स्विच करने के साथ आईआरसी समर्थन क्या करना है, और आरबीएनवी को सरल और समझने योग्य बनाया गया है ताकि समर्थन की आवश्यकता न हो। लेकिन क्या आपको कभी मदद की ज़रूरत है, इश्यू ट्रैकर और ट्विटर सिर्फ दो क्लिक दूर हैं।
प्रकटीकरण: मैं आरबीएनवी, रूबी-बिल्ड, और आरबीएनवी-वर्र्स का लेखक हूं।
इस तरह के एक उत्कृष्ट जवाब देने के लिए समय लेने के लिए धन्यवाद। – superluminary
वाह, इस तरह के एक समझदार और समझने योग्य स्पष्टीकरण के लिए धन्यवाद। एक प्राकृतिक जन्म शिक्षक। – racl101
लगता है। रूबी-संस्करण भी चाल करेगा। – alexzg