Polecam direnv . Jest to przełącznik środowiska dla powłoki.
Przed każdym monitem sprawdza istnienie pliku „.envrc” w katalogu bieżącym i nadrzędnym. Jeśli plik istnieje (i jest autoryzowany), jest ładowany do podpowłoki bash, a wszystkie wyeksportowane zmienne są następnie przechwytywane przez direnv, a następnie udostępniane bieżącej powłoce.
Oto jak używać direnv z ruby-install
+ ruby-install
Dodaj to do ~/.direnvrc
use_ruby() {
local ruby_root=$HOME/.rubies/$1
load_prefix "$ruby_root"
layout_ruby
}
Zainstaluj ruby-install ( brew install ruby-install
) i zainstaluj kilka rubinów.
ruby-install ruby 1.9.3
ruby-install ruby 2.0.0
ruby-install ruby 2.2.0
Następnie zrób kilka linków symbolicznych dla wygody:
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
I wreszcie w każdym projekcie .envrc
:
use ruby 2.0
Spowoduje to umieszczenie wszystkich klejnotów w katalogu projektu .direnv/ruby
(ułatwi to otwieranie klejnotów). bundler umieści pliki binarne opakowania .direnv/bin
(nie więcej bundle exec
!).
+ rbenv
Możliwe jest również użycie rbenv, dodając use rbenv
polecenie w dowolnym .envrc
pliku. Spowoduje to aktywację rbenv, który z kolei umieści opakowania ruby w PATH.
Zauważ, że nie jest konieczne instalowanie rbenv w .bashrc lub .zshrc, aby to zadziałało.
+ RVM
Oto najbardziej skomplikowany plik .envrc, którego używam w projektach Ruby:
rvm use 1.8.7
layout ruby
PATH_add .direnv/bundler-bin
rvm służy do wyboru odpowiedniej wersji ruby
polecenia układu automatycznie ustawiają niektóre zwykłe zmienne środowiskowe. Na razie istnieje tylko układ rubinowy. To, co robi, to ustawienie zmiennej środowiskowej GEM_HOME i jej katalogu bin na twoją ścieżkę. Ponieważ zależy to od wersji ruby, pamiętaj, aby wywołać ją po "rvm". Ponieważ każdy katalog układu ruby ma swój własny GEM_HOME, nie musisz używać gemsetów rvm.
PATH_add poprzedza i rozwija podaną ścieżkę względną. W takim przypadku używam tego do oddzielenia binstubs bundlerów od moich własnych skryptów bin z plikamibundle install --binstubs .direnv/bundler-bin
Jeśli chcesz się dowiedzieć, co dokładnie robią te polecenia, na razie: cat direnv stdlib
| mniej