rbenv — это инструмент управления версиями языка программирования Ruby в Unix-подобных системах. Это полезно для переключения между несколькими версиями Ruby на одном компьютере и для обеспечения того, чтобы каждый проект, над которым вы работаете, всегда работал на правильной версии Ruby.
После того, как rbenv внедрится в ваш PATH во время установки, любой вызов ruby
, gem
, bundler
или другого исполняемого файла, связанного с Ruby, сначала активирует rbenv. Затем rbenv сканирует текущий каталог проекта на наличие файла с именем .ruby-version
. Если этот файл найден, он определяет версию Ruby, которую следует использовать в этом каталоге. Наконец, rbenv ищет эту версию Ruby среди тех, что установлены в ~/.rbenv/versions/
.
Вы можете выбрать версию Ruby для своего проекта, например:
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
Настройте оболочку для загрузки rbenv.
rbenv init
Закройте окно терминала и откройте новое, чтобы изменения вступили в силу.
Вот и все! Теперь вы готовы установить некоторые версии Ruby.
Примечание
Для более автоматизированной установки вы можете использовать rbenv-installer. Если вы не хотите выполнять скрипты, загруженные с URL-адреса в Интернете, или просто предпочитаете ручной подход, выполните следующие действия.
Это позволит вам использовать последнюю версию rbenv без необходимости общесистемной установки.
Клонируйте rbenv в ~/.rbenv
.
git clone https://github.com/rbenv/rbenv.git ~ /.rbenv
Настройте оболочку для загрузки rbenv.
~ /.rbenv/bin/rbenv init
Если вам интересно, посмотрите здесь, чтобы понять, что делает init
.
Перезапустите оболочку, чтобы эти изменения вступили в силу. (Обычно это можно сделать, открыв новую вкладку терминала.)
При установке rbenv вручную может быть полезно обратить внимание на то, как работают сценарии завершения для различных оболочек. Сценарии завершения помогают вводить команды rbenv, расширяя частично введенные имена команд rbenv и флаги опций; обычно это вызывается нажатием клавиши Tab в интерактивной оболочке.
Сценарий завершения bash для rbenv поставляется вместе с проектом и загружается механизмом rbenv init
.
Сценарий завершения zsh поставляется вместе с проектом, но его необходимо добавить в FPATH в zsh, прежде чем оболочка сможет его обнаружить. Один из способов сделать это — отредактировать ~/.zshrc
:
# assuming that rbenv was installed to `~/.rbenv`
FPATH= ~ /.rbenv/completions: " $FPATH "
autoload -U compinit
compinit
Сценарий завершения Fish для rbenv поставляется вместе с самой оболочкой Fish и не поддерживается проектом rbenv.
Команда rbenv install
не поставляется с rbenv «из коробки», а предоставляется плагином Ruby-build.
Прежде чем пытаться установить Ruby, убедитесь, что в вашей среде сборки есть необходимые инструменты и библиотеки . Затем:
# 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
вы можете загрузить и скомпилировать Ruby вручную как подкаталог ~/.rbenv/versions
. Запись в этом каталоге также может быть символической ссылкой на версию Ruby, установленную в другом месте файловой системы.
Выберите версию Ruby для своего проекта, например, используя rbenv local 3.1.2
. Затем приступайте к установке драгоценных камней, как обычно:
gem install bundler
Примечание
Не следует использовать sudo для установки драгоценных камней. Обычно версии Ruby устанавливаются в ваш домашний каталог и, следовательно, доступны для записи вашим пользователем. Если при установке драгоценных камней вы получаете сообщение об ошибке «у вас нет прав на запись», вполне вероятно, что ваша «системная» версия Ruby по-прежнему является глобальной версией по умолчанию. Измените это с помощью rbenv global <version>
и повторите попытку.
Проверьте место установки драгоценных камней с помощью gem env
:
gem env home
# => ~/.rbenv/versions/<version>/lib/ruby/gems/...
Со временем установленные вами версии Ruby будут накапливаться в вашем каталоге ~/.rbenv/versions
.
Чтобы удалить старые версии Ruby, просто rm -rf
каталог версии, которую вы хотите удалить. Вы можете найти каталог конкретной версии Ruby с помощью команды rbenv prefix
, например, rbenv prefix 2.7.0
.
Плагин Ruby-build предоставляет команду rbenv uninstall
для автоматизации процесса удаления.
Основные команды rbenv, которые вам нужно знать:
Перечисляет все версии Ruby, известные 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
. Вы также можете отменить версию оболочки:
rbenv shell --unset
Обратите внимание, что для использования этой команды вам потребуется включить интеграцию оболочки rbenv (шаг 3 инструкций по установке). Если вы предпочитаете не использовать интеграцию с оболочкой, вы можете просто установить переменную RBENV_VERSION
самостоятельно:
export RBENV_VERSION=jruby-1.7.1
Устанавливает прокладки для всех исполняемых файлов Ruby, известных rbenv ( ~/.rbenv/versions/*/bin/*
). Обычно вам не нужно запускать эту команду, поскольку она запускается автоматически после установки драгоценных камней.
rbenv rehash
Отображает полный путь к исполняемому файлу, который rbenv вызовет при запуске данной команды.
$ rbenv which irb
/Users/sam/.rbenv/versions/1.9.3-p327/bin/irb
Перечисляет все версии Ruby, содержащие указанное имя исполняемого файла.
$ rbenv whence rackup
1.9.3-p327
jruby-1.7.1
ree-1.8.7-2011.03
Вы можете повлиять на работу rbenv с помощью следующих настроек:
имя | по умолчанию | описание |
---|---|---|
RBENV_VERSION | Указывает версию Ruby, которая будет использоваться. Также см. rbenv shell | |
RBENV_ROOT | ~/.rbenv | Определяет каталог, в котором находятся версии Ruby и оболочки. Также см. 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 для команд rbenv.
Восстанавливает прокладки rbenv. Если этот шаг замедляет запуск оболочки, вы можете вызвать rbenv init -
с флагом --no-rehash
.
Устанавливает диспетчер «sh». Этот бит также не является обязательным, но позволяет rbenv и плагинам изменять переменные в вашей текущей оболочке, что делает возможным использование таких команд, как rbenv shell
.
Вы можете запустить rbenv init -
для себя, чтобы проверить сгенерированный скрипт.
Простота rbenv позволяет легко временно отключить его или удалить из системы.
Чтобы отключить rbenv для управления вашими версиями Ruby, просто закомментируйте или удалите строку rbenv init
из конфигурации запуска оболочки. Это удалит каталог rbenv shims из PATH, и будущие вызовы, такие как ruby
будут выполнять системную версию Ruby, полностью игнорируя rbenv.
Пока он отключен, rbenv
по-прежнему будет доступен из командной строки, но переключение версий не повлияет на ваши приложения Ruby.
Чтобы полностью удалить rbenv, выполните шаг (1), а затем удалите корневой каталог rbenv. Это удалит все версии Ruby , которые были установлены в каталоге `rbenv root`/versions/
:
rm -rf "$(rbenv root)"
Если вы установили rbenv с помощью менеджера пакетов, на последнем этапе выполните удаление пакета rbenv:
brew uninstall rbenv
sudo apt purge rbenv
sudo pacman -R rbenv
Тесты выполняются с использованием Bats:
$ bats test
$ bats test/<file>.bats
Пожалуйста, не стесняйтесь отправлять запросы на включение и сообщать об ошибках в системе отслеживания ошибок.