Czy jest coś podobnego do narzędzia virtualenv w języku Python ?
Zasadniczo umożliwia instalowanie pakietów Pythona w środowisku piaskownicy, więc easy_install django
nie trafia do katalogu pakietów witryn w całym systemie, ale trafia do katalogu utworzonego przez virtualenv.
Na przykład:
$ virtualenv test
New python executable in test/bin/python
Installing setuptools...cd .........done.
$ cd test/
$ source bin/activate
(test)$ easy_install tvnamer
Searching for tvnamer
Best match: tvnamer 0.5.1
Processing tvnamer-0.5.1-py2.5.egg
Adding tvnamer 0.5.1 to easy-install.pth file
Installing tvnamer script to /Users/dbr/test/bin
Using /Library/Python/2.5/site-packages/tvnamer-0.5.1-py2.5.egg
Processing dependencies for tvnamer
Finished processing dependencies for tvnamer
(test)$ which tvnamer
/Users/dbr/test/bin/tvnamer
Czy jest coś takiego dla RubyGems?
python
ruby
virtualenv
dbr
źródło
źródło
Ani sandbox, RVM, ani rbenv nie zarządzają wersjami zależności gem aplikacji. Narzędziem do tego jest bundler .
bundle install
do instalowania jawnych wersji tych zależności w izolowanej lokalizacjibundle exec
do uruchomienia aplikacjiźródło
Wydaje się, że nikt nie wspomniał o rbenv .
źródło
Myślę, że polubisz piaskownicę .
źródło
$HOME
?! Co to do cholery ma perełki trzeba , że dla? Smutne jest to, że to najlepsza rzecz, jaką widziałem w tej pracy. Nawet bundler domyślnie instaluje w systemowej ścieżce ruby.Wspomnę o tym, jak robię to z Bundlerem (którego używam z RVM - RVM do zarządzania rubinami i domyślnym zestawem globalnych klejnotów, Bundler do obsługi klejnotów specyficznych dla projektu)
Uruchomienie tego polecenia w katalogu głównym projektu będzie zainstalować perełki wymienione z Gemfile, umieścić w bibliotekami
./vendor
oraz wszelkie wykonywalne w./bin
i wszystkierequire
s (jeśli używaszbundle console
lub Bundler wymaga) będą odnosić te EXE i bibliotekami.Pracuje dla mnie.
źródło
vendor.noindex
nazwiesz ścieżkę, Twoje wyszukiwania Spotlight nie będą zaśmiecone danymi zindeksowanymi ze sprzedawanych klejnotów.rbenv
, ale to już inna historia), ponieważ izoluje zestaw gemset i wersję rubinową. Nic nie jest instalowane w całym systemie, a każdy projekt ma dobrze zadeklarowane zależności. Wskazówka:bundle config path vendor
nigdy nie zapomnij tego argumentu.Jeśli potrzebujesz tylko zainstalować klejnoty jako użytkownik inny niż root, spróbuj ustawić
GEM_HOME
zmienną środowiskową. Potem po prostu biegnijgem
.Na przykład:
źródło
export GEM_HOME=$HOME/.local/gems
GEM_HOME=$HOME/.local
więc udostępnia ten sam.bin
folder. W takim przypadku nie musimy aktualizować naszej$PATH
zmiennej.~/.bashrc
i gotowe). +1Polecam 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
Zainstaluj ruby-install (
brew install ruby-install
) i zainstaluj kilka rubinów.Następnie zrób kilka linków symbolicznych dla wygody:
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ęcejbundle 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 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 plikami
bundle install --binstubs .direnv/bundler-bin
Jeśli chcesz się dowiedzieć, co dokładnie robią te polecenia, na razie: cat
direnv stdlib
| mniejźródło
Mineshaft to projekt, nad którym pracuję od jakiegoś czasu i nad którym kontynuuję prace rozwojowe.
Oferuje możliwość tworzenia środowisk wirtualnych podobnych do tego, jak działa virtualenv, a także umożliwia globalną instalację Rubiego.
źródło