সংক্ষিপ্ত ব্যাখ্যা: rbenv আপনার পরিবেশের মধ্যে hooking দ্বারা কাজ করে 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। আপনার পথে 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 ধরে নেয় আপনি "সিস্টেম" রুবি — অর্থ যে কোনও সংস্করণ চলবে যদি rbenv আপনার পথে না থাকে।
(আপনি rbenv localকমান্ডটি দিয়ে একটি প্রকল্প-নির্দিষ্ট রুবি সংস্করণ সেট করতে পারেন যা .rbenv-versionবর্তমান ডিরেক্টরিতে একটি ফাইল তৈরি করে Similarly একইভাবে, rbenv globalকমান্ডটি ~/.rbenv/versionফাইলটি পরিবর্তন করে )
একটি সঙ্গে সশস্ত্র RBENV_VERSIONএনভায়রনমেন্ট ভেরিয়েবল, rbenv যোগ ~/.rbenv/versions/$RBENV_VERSION/binআপনার সামনে PATH, তারপর কমান্ড আর্গুমেন্ট প্রেরণ execs rbenv exec। ভাল খবর!
হুডের নীচে ঠিক কী ঘটে যায় তার বিশদ বিবরণের জন্য, RBENV_DEBUG=1রুবি কমান্ডটি সেট করে চালানোর চেষ্টা করুন । Rbenv দ্বারা চালিত প্রতিটি বাশ কমান্ড আপনার টার্মিনালে লেখা হবে।
এখন, rbenv শুধু সুইচিং সংস্করণের সাথে সংশ্লিষ্ট করা হয়, কিন্তু থাকা প্লাগইনগুলির একটি সমৃদ্ধ বাস্তু আপনার কাছ থেকে সবকিছু করতে সাহায্য করবে রুবি ইনস্টল করতে আপনার পরিবেশ স্থাপনের , "gemsets" পরিচালনার এবং এমনকি স্বয়ংক্রিয়bundle exec ।
আমি রুবি সংস্করণগুলিতে স্যুইচিংয়ের সাথে আইআরসি সমর্থনটির কী দরকার তা আমি পুরোপুরি নিশ্চিত নই এবং rbenv সহজ এবং বোধগম্যভাবে নকশাকৃতভাবে তৈরি করা হয়েছে যাতে সমর্থন প্রয়োজন না হয়। তবে আপনার যদি কখনও সহায়তার দরকার হয় তবে ইস্যু ট্র্যাকার এবং টুইটারের মাত্র কয়েক ক্লিক দূরে রয়েছে।
প্রকাশ: আমি rbenv, রুবি-বিল্ড এবং rbenv-vars এর লেখক।