Рекомендую діренв . Це перемикач середовища для оболонки.
Перед кожним запитом він перевіряє наявність файлу ".envrc" у поточному та батьківському каталогах. Якщо файл існує (і авторизований), він завантажується в bash-підколон і всі експортовані змінні потім захоплюються direnv і потім стають доступними для поточної оболонки.
Ось як використовувати direnv з 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, який, в свою чергу, помістить рубінові обгортки в PATH.
Зауважте, що для цього не потрібно встановлювати rbenv в .bashrc або .zshrc.
+ RVM
Ось найскладніший .envrc, який я використовую в рубінових проектах:
rvm use 1.8.7
layout ruby
PATH_add .direnv/bundler-bin
rvm використовується для вибору потрібної для вас версії ruby
Команди компонування автоматично встановлюють деякі звичні змінні середовища. Наразі існує лише макет рубіну. Для цього потрібно встановити змінну середовища GEM_HOME, і це каталог бін на ваш шлях. Оскільки це залежить від версії ruby, обов'язково зателефонуйте після "rvm". Оскільки у всіх каталогах макетів рубіну є свої GEM_HOME, вам не потрібно використовувати гемсети rvm.
PATH_add передує і розширює заданий відносний шлях. У такому випадку я використовую це для того, щоб відокремити скриньки постачальників пакетів від власних скриптів бінаbundle install --binstubs .direnv/bundler-bin
Якщо ви хочете дізнатися, що саме роблять ці команди, наразі: cat direnv stdlib
| менше