Я рекомендую direnv . Это переключатель среды для оболочки.
Перед каждым запросом проверяется наличие файла «.envrc» в текущем и родительском каталогах. Если файл существует (и авторизован), он загружается в под-оболочку bash, и все экспортируемые переменные затем записываются в direnv и затем делают доступной текущую оболочку.
Вот как использовать direnv с ruby-install
+ ruby-install
Добавьте это к ~/.direnvrc
use_ruby() {
local ruby_root=$HOME/.rubies/$1
load_prefix "$ruby_root"
layout_ruby
}
Установите ruby-install ( brew install ruby-install
) и установите несколько рубинов.
ruby-install ruby 1.9.3
ruby-install ruby 2.0.0
ruby-install ruby 2.2.0
А затем сделайте пару символических ссылок для удобства:
ln -s .rubies/1.9 ruby-1.9.3-p*
ln -s .rubies/2.0 ruby-2.0.0
ln -s .rubies/2.2 ruby-2.2.0
И, наконец, в любом проекте .envrc
:
use ruby 2.0
Это поместит все драгоценные камни в .direnv/ruby
каталог проекта (облегчает открытие драгоценных камней). bundler поместит двоичные файлы оболочки .direnv/bin
(не более bundle exec
!).
+ rbenv
Также можно использовать rbenv, добавив use rbenv
команду в любой.envrc
файл. Это активирует rbenv, который, в свою очередь, поместит оболочки ruby в PATH.
Обратите внимание, что не обязательно устанавливать rbenv в .bashrc или .zshrc, чтобы это работало.
+ RVM
Вот самый сложный .envrc, который я использую в проектах ruby:
rvm use 1.8.7
layout ruby
PATH_add .direnv/bundler-bin
rvm используется для выбора правильной версии ruby для вас
Команды компоновки автоматически устанавливают некоторые обычные переменные среды. На данный момент существует только рубиновый макет. Он устанавливает переменную среды GEM_HOME и ее каталог bin по вашему пути. Поскольку это зависит от версии ruby, обязательно вызывайте ее после «rvm». Поскольку у каждой директории макета ruby есть свой собственный GEM_HOME, вам не нужно использовать наборы гемов rvm.
PATH_add добавляет и расширяет заданный относительный путь. В этом случае я использую это для отделения binstubs-пакетов от моих собственных bin-скриптов сbundle install --binstubs .direnv/bundler-bin
Если вы хотите узнать, что именно делают эти команды, сейчас: cat direnv stdlib
| Меньше