rbenv هي أداة لإدارة الإصدارات للغة البرمجة Ruby على الأنظمة المشابهة لنظام Unix. إنه مفيد للتبديل بين إصدارات Ruby المتعددة على نفس الجهاز وللتأكد من أن كل مشروع تعمل عليه يعمل دائمًا على إصدار Ruby الصحيح.
بعد أن يقوم rbenv بإدخال نفسه في PATH الخاص بك في وقت التثبيت، فإن أي استدعاء لـ ruby
أو gem
أو bundler
أو أي ملف قابل للتنفيذ مرتبط بـ Ruby سيؤدي أولاً إلى تنشيط rbenv. بعد ذلك، يقوم rbenv بفحص دليل المشروع الحالي بحثًا عن ملف اسمه .ruby-version
. إذا تم العثور عليه، فسيحدد هذا الملف إصدار روبي الذي يجب استخدامه داخل هذا الدليل. أخيرًا، يبحث rbenv عن إصدار Ruby من بين الإصدارات المثبتة ضمن ~/.rbenv/versions/
.
يمكنك اختيار إصدار روبي لمشروعك، على سبيل المثال:
cd myproject
# choose Ruby version 3.1.2:
rbenv local 3.1.2
سيؤدي القيام بذلك إلى إنشاء أو تحديث ملف .ruby-version
في الدليل الحالي بالإصدار الذي اخترته. قد يستخدم مشروع مختلف خاص بك وهو دليل آخر إصدارًا مختلفًا من Ruby تمامًا — سينتقل rbenv بسلاسة من إصدار Ruby إلى آخر عند تبديل المشاريع.
أخيرًا، يمكن تخصيص كل جانب من جوانب آلية rbenv تقريبًا عبر المكونات الإضافية المكتوبة بلغة bash.
بساطة rbenv لها فوائدها، ولكن أيضًا بعض السلبيات. راجع المقارنة بين مديري الإصدارات لمزيد من التفاصيل وبعض البدائل.
في الأنظمة التي تحتوي على مدير حزم Homebrew، يوصى باستخدام طريقة "استخدام مديري الحزم". في الأنظمة الأخرى، قد يكون "Basic Git Checkout" هو أسهل طريقة لضمان تثبيت أحدث إصدار من rbenv دائمًا.
قم بتثبيت rbenv باستخدام إحدى الطرق التالية.
على نظام التشغيل macOS أو Linux، نوصي بتثبيت rbenv مع Homebrew.
brew install rbenv
[!حذر]
إن إصدار rbenv الذي تم تجميعه وصيانته في مستودعات Debian وUbuntu الرسمية قديم . لتثبيت الإصدار الأحدث، يوصى بتثبيت rbenv باستخدام git.
sudo apt install rbenv
لدى Archlinux حزمة AUR لـ rbenv ويمكنك تثبيتها من AUR باستخدام الإرشادات الواردة في صفحة الويكي هذه.
لدى Fedora حزمة رسمية يمكنك تثبيتها:
sudo dnf install rbenv
قم بإعداد Shell الخاص بك لتحميل rbenv.
rbenv init
أغلق نافذة الوحدة الطرفية وافتح نافذة جديدة حتى تدخل التغييرات حيز التنفيذ.
هذا كل شيء! أنت الآن جاهز لتثبيت بعض إصدارات روبي.
ملحوظة
للحصول على تثبيت أكثر تلقائية، يمكنك استخدام rbenv-installer. إذا كنت لا تريد تنفيذ البرامج النصية التي تم تنزيلها من عنوان URL على الويب أو ببساطة تفضل الطريقة اليدوية، فاتبع الخطوات أدناه.
سيؤدي هذا إلى استخدام أحدث إصدار من rbenv دون الحاجة إلى التثبيت على مستوى النظام.
استنساخ rbenv إلى ~/.rbenv
.
git clone https://github.com/rbenv/rbenv.git ~ /.rbenv
قم بإعداد Shell الخاص بك لتحميل rbenv.
~ /.rbenv/bin/rbenv init
إذا كنت مهتمًا بالفضول، فانظر هنا لفهم ما يفعله init
.
أعد تشغيل الصدفة الخاصة بك حتى تدخل هذه التغييرات حيز التنفيذ. (عادةً ما يؤدي فتح علامة تبويب طرفية جديدة إلى القيام بذلك.)
عند تثبيت rbenv يدويًا ، قد يكون من المفيد ملاحظة كيفية عمل البرامج النصية للإكمال للأصداف المختلفة. تساعد البرامج النصية للإكمال في كتابة أوامر rbenv عن طريق توسيع أسماء أوامر rbenv المُدخلة جزئيًا وأعلام الخيارات؛ عادةً ما يتم استدعاء هذا عن طريق الضغط على مفتاح Tab في الغلاف التفاعلي.
يأتي البرنامج النصي لإكمال bash لـ rbenv مع المشروع ويتم تحميله بواسطة آلية rbenv init
.
يأتي البرنامج النصي لإكمال zsh مع المشروع، ولكن يجب إضافته إلى FPATH في zsh قبل أن يتم اكتشافه بواسطة Shell. إحدى الطرق للقيام بذلك هي تعديل ~/.zshrc
:
# assuming that rbenv was installed to `~/.rbenv`
FPATH= ~ /.rbenv/completions: " $FPATH "
autoload -U compinit
compinit
البرنامج النصي لإكمال الأسماك لسفن rbenv بقشرة السمكة نفسها ولا تتم صيانته بواسطة مشروع rbenv.
لا يأتي أمر rbenv install
مع rbenv الجاهز، ولكن يتم توفيره بواسطة البرنامج الإضافي Ruby-build.
قبل محاولة تثبيت روبي، تأكد من أن بيئة البناء الخاصة بك تحتوي على الأدوات والمكتبات اللازمة . ثم:
# list latest stable versions:
rbenv install -l
# list all local versions:
rbenv install -L
# install a Ruby version:
rbenv install 3.1.2
لاستكشاف أخطاء سيناريوهات BUILD FAILED
وإصلاحها، راجع قسم مناقشات Ruby-build.
ملحوظة
إذا لم يتم العثور على أمر rbenv install
، فيمكنك تثبيت Ruby-build كمكون إضافي:
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
قم بتعيين إصدار Ruby لإنهاء التثبيت والبدء في استخدام Ruby:
rbenv global 3.1.2 # set the default Ruby version for this machine
# or:
rbenv local 3.1.2 # set the Ruby version for this directory
بدلاً من أمر rbenv install
، يمكنك تنزيل روبي وتجميعها يدويًا كدليل فرعي لـ ~/.rbenv/versions
. يمكن أيضًا أن يكون الإدخال في هذا الدليل رابطًا رمزيًا لإصدار Ruby المثبت في مكان آخر على نظام الملفات.
حدد إصدار روبي لمشروعك باستخدام rbenv local 3.1.2
، على سبيل المثال. ثم تابع تثبيت الأحجار الكريمة كما تفعل عادةً:
gem install bundler
ملحوظة
يجب ألا تستخدم Sudo لتثبيت الأحجار الكريمة. عادة، سيتم تثبيت إصدارات روبي ضمن الدليل الرئيسي الخاص بك وبالتالي يمكن للمستخدم الكتابة عليها. إذا تلقيت الخطأ "ليس لديك أذونات الكتابة" عند تثبيت الأحجار الكريمة، فمن المحتمل أن إصدار روبي "النظام" الخاص بك لا يزال هو الإصدار الافتراضي العالمي. قم بتغيير ذلك باستخدام rbenv global <version>
وحاول مرة أخرى.
تحقق من الموقع الذي تم فيه تثبيت الأحجار الكريمة باستخدام gem env
:
gem env home
# => ~/.rbenv/versions/<version>/lib/ruby/gems/...
مع مرور الوقت، ستتراكم إصدارات روبي التي قمت بتثبيتها في دليل ~/.rbenv/versions
الخاص بك.
لإزالة إصدارات روبي القديمة، ما عليك سوى rm -rf
دليل الإصدار الذي تريد إزالته. يمكنك العثور على دليل إصدار معين من روبي باستخدام أمر rbenv prefix
، على سبيل المثال rbenv prefix 2.7.0
.
يوفر المكون الإضافي Ruby-build أمر rbenv uninstall
لأتمتة عملية الإزالة.
أوامر rbenv الرئيسية التي تحتاج إلى معرفتها هي:
يسرد جميع إصدارات روبي المعروفة لـ rbenv، ويظهر علامة النجمة بجوار الإصدار النشط حاليًا.
$ rbenv versions
1.8.7-p352
1.9.2-p290
* 1.9.3-p327 (set by /Users/sam/.rbenv/version)
jruby-1.7.1
rbx-1.2.4
ree-1.8.7-2011.03
يعرض إصدار Ruby النشط حاليًا، بالإضافة إلى معلومات حول كيفية تعيينه.
$ rbenv version
1.9.3-p327 (set by /Users/sam/.rbenv/version)
يضبط إصدار Ruby المحلي الخاص بالتطبيق عن طريق كتابة اسم الإصدار إلى ملف .ruby-version
في الدليل الحالي. يتجاوز هذا الإصدار الإصدار العام، ويمكن تجاوزه بنفسه عن طريق تعيين متغير البيئة RBENV_VERSION
أو باستخدام أمر rbenv shell
.
rbenv local 3.1.2
عند التشغيل بدون رقم إصدار، يقوم rbenv local
بالإبلاغ عن الإصدار المحلي الذي تم تكوينه حاليًا. يمكنك أيضًا إلغاء تعيين الإصدار المحلي:
rbenv local --unset
يضبط الإصدار العالمي من Ruby ليتم استخدامه في جميع الأصداف عن طريق كتابة اسم الإصدار إلى ملف ~/.rbenv/version
. يمكن تجاوز هذا الإصدار عن طريق ملف .ruby-version
خاص بالتطبيق، أو عن طريق تعيين متغير البيئة RBENV_VERSION
.
rbenv global 3.1.2
يخبر system
اسم الإصدار الخاص rbenv باستخدام نظام Ruby (تم اكتشافه من خلال البحث في $PATH
).
عند التشغيل بدون رقم إصدار، يقوم rbenv global
بالإبلاغ عن الإصدار العام الذي تم تكوينه حاليًا.
يضبط إصدار Ruby الخاص بالصدفة عن طريق تعيين متغير البيئة RBENV_VERSION
في الصدفة الخاصة بك. يتجاوز هذا الإصدار الإصدارات الخاصة بالتطبيقات والإصدار العمومي.
rbenv shell jruby-1.7.1
عند التشغيل بدون رقم إصدار، تقوم rbenv shell
بالإبلاغ عن القيمة الحالية لـ RBENV_VERSION
. يمكنك أيضًا إلغاء تعيين إصدار Shell:
rbenv shell --unset
لاحظ أنك ستحتاج إلى تمكين تكامل shell الخاص بـ rbenv (الخطوة 3 من تعليمات التثبيت) لتتمكن من استخدام هذا الأمر. إذا كنت تفضل عدم استخدام تكامل الصدفة، فيمكنك ببساطة تعيين المتغير RBENV_VERSION
بنفسك:
export RBENV_VERSION=jruby-1.7.1
تثبيت الحشوات لجميع ملفات روبي التنفيذية المعروفة لـ rbenv ( ~/.rbenv/versions/*/bin/*
). عادةً لا تحتاج إلى تشغيل هذا الأمر، لأنه سيتم تشغيله تلقائيًا بعد تثبيت الأحجار الكريمة.
rbenv rehash
يعرض المسار الكامل للملف القابل للتنفيذ الذي سوف يستدعيه rbenv عند تشغيل الأمر المحدد.
$ rbenv which irb
/Users/sam/.rbenv/versions/1.9.3-p327/bin/irb
يسرد كافة إصدارات روبي التي تحتوي على الاسم القابل للتنفيذ المحدد.
$ rbenv whence rackup
1.9.3-p327
jruby-1.7.1
ree-1.8.7-2011.03
يمكنك التأثير على كيفية عمل rbenv بالإعدادات التالية:
اسم | تقصير | وصف |
---|---|---|
RBENV_VERSION | يحدد إصدار روبي الذي سيتم استخدامه. انظر أيضًا rbenv shell | |
RBENV_ROOT | ~/.rbenv | يحدد الدليل الذي توجد به إصدارات روبي والحشوات. انظر أيضًا rbenv root |
RBENV_DEBUG | إخراج معلومات التصحيح. أيضًا كـ: rbenv --debug <subcommand> | |
RBENV_HOOK_PATH | انظر ويكي | قائمة المسارات المفصولة بنقطتين للبحث عن خطافات rbenv. |
RBENV_DIR | $PWD | الدليل لبدء البحث عن ملفات .ruby-version . |
rbenv init
هو أمر مساعد لتمهيد rbenv إلى الصدفة. يعد هذا المساعد جزءًا من تعليمات التثبيت الموصى بها، ولكنه اختياري، حيث يمكن للمستخدم المتقدم إعداد المهام التالية يدويًا. إليك ما يفعله الأمر عندما يتم eval
مخرجاته بواسطة الصدفة أثناء بدء التشغيل:
يضيف rbenv
القابل للتنفيذ إلى PATH إذا لزم الأمر.
يُلحق الدليل ~/.rbenv/shims
مسبقًا بـ PATH. هذا هو المطلب الوحيد لكي يعمل rbenv بشكل صحيح.
تثبيت استكمال bash shell لأوامر rbenv.
يجدد الحشوات rbenv. إذا أدت هذه الخطوة إلى إبطاء بدء تشغيل الصدفة، فيمكنك استدعاء rbenv init -
باستخدام علامة --no-rehash
.
تثبيت المرسل "sh". هذا البت اختياري أيضًا، ولكنه يسمح لـ rbenv والمكونات الإضافية بتغيير المتغيرات في صدفتك الحالية، مما يجعل أوامر مثل rbenv shell
ممكنة.
يمكنك تشغيل rbenv init -
لتفحص بنفسك البرنامج النصي الذي تم إنشاؤه.
إن بساطة rbenv تجعل من السهل تعطيله مؤقتًا أو إلغاء تثبيته من النظام.
لتعطيل إدارة rbenv لإصدارات Ruby الخاصة بك، ما عليك سوى التعليق على سطر rbenv init
أو إزالته من تكوين بدء تشغيل Shell الخاص بك. سيؤدي هذا إلى إزالة دليل rbenv shims من PATH، وستقوم الاستدعاءات المستقبلية مثل ruby
بتنفيذ إصدار Ruby للنظام، متجاوزة rbenv تمامًا.
أثناء تعطيله، سيظل من الممكن الوصول إلى rbenv
من خلال سطر الأوامر، لكن تطبيقات Ruby الخاصة بك لن تتأثر بتبديل الإصدار.
لإلغاء تثبيت rbenv بالكامل، قم بتنفيذ الخطوة (1) ثم قم بإزالة دليل جذر rbenv. سيؤدي هذا إلى حذف كافة إصدارات روبي التي تم تثبيتها ضمن `rbenv root`/versions/
:
rm -rf "$(rbenv root)"
إذا قمت بتثبيت rbenv باستخدام مدير الحزم، فقم بإجراء إزالة حزمة rbenv كخطوة أخيرة:
brew uninstall rbenv
sudo apt purge rbenv
sudo pacman -R rbenv
يتم تنفيذ الاختبارات باستخدام الخفافيش:
$ bats test
$ bats test/<file>.bats
لا تتردد في إرسال طلبات السحب وتسجيل الأخطاء في أداة تعقب المشكلات.