Есть ли что-то похожее на утилиту Python virtualenv ?
По сути, он позволяет вам устанавливать пакеты Python в изолированную среду, поэтому easy_install django
он не попадает в общесистемный каталог site-packages, а попадает в каталог, созданный virtualenv.
Например:
$ 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
Есть ли что-то подобное для RubyGems?
python
ruby
virtualenv
DBR
источник
источник
Ни песочница, RVM, ни rbenv не управляют версиями гем-зависимостей вашего приложения. Инструмент для этого - упаковщик .
bundle install
для установки явных версий этих зависимостей в изолированном местеbundle exec
для запуска вашего приложенияисточник
Кажется, никто не упомянул rbenv .
источник
Я думаю, вам понравится песочница .
источник
$HOME
?! Что, черт возьми, драгоценные камни , нужно , что для? Печально то, что это лучшее, что я видел на работе. Даже бандлер по умолчанию устанавливает в системный путь ruby.Я упомяну способ, которым я делаю это с Bundler (который я использую с RVM - RVM для управления рубинами и набором глобальных драгоценных камней по умолчанию, Bundler для обработки драгоценных камней, специфичных для проекта)
Выполнение этой команды в корне проекта установит гемы, перечисленные в вашем Gemfile, поместит библиотеки
./vendor
и все исполняемые файлы./bin
и всеrequire
s (если вы используетеbundle console
или требует Bundler) будет ссылаться на эти exes и библиотеки.Работает для меня.
источник
vendor.noindex
назовете путь, по которому ваши поиски Spotlight не будут загромождены данными, проиндексированными из продаваемых драгоценных камней.rbenv
, но это другая история), так как он изолирует gemset и версию ruby. Ничто не установлено в масштабе всей системы, и у каждого проекта есть все свои зависимости, хорошо объявленные. Совет: используйте,bundle config path vendor
чтобы никогда не забывать этот аргумент.Если вам нужно установить gems только без полномочий root, попробуйте установить
GEM_HOME
переменную окружения. Тогда просто бегиgem
.Например:
источник
export GEM_HOME=$HOME/.local/gems
GEM_HOME=$HOME/.local
поэтому он использует одну и ту же.bin
папку. В этом случае нам не нужно обновлять нашу$PATH
переменную.~/.bashrc
и все готово). +1Я рекомендую direnv . Это переключатель среды для оболочки.
Перед каждым запросом проверяется наличие файла «.envrc» в текущем и родительском каталогах. Если файл существует (и авторизован), он загружается в под-оболочку bash, и все экспортируемые переменные затем записываются в direnv и затем делают доступной текущую оболочку.
Вот как использовать direnv с ruby-install
+ ruby-install
Добавьте это к
~/.direnvrc
Установите ruby-install (
brew install ruby-install
) и установите несколько рубинов.А затем сделайте пару символических ссылок для удобства:
И, наконец, в любом проекте
.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 используется для выбора правильной версии ruby для вас
Команды компоновки автоматически устанавливают некоторые обычные переменные среды. На данный момент существует только рубиновый макет. Он устанавливает переменную среды GEM_HOME и ее каталог bin по вашему пути. Поскольку это зависит от версии ruby, обязательно вызывайте ее после «rvm». Поскольку у каждой директории макета ruby есть свой собственный GEM_HOME, вам не нужно использовать наборы гемов rvm.
PATH_add добавляет и расширяет заданный относительный путь. В этом случае я использую это для отделения binstubs-пакетов от моих собственных bin-скриптов с
bundle install --binstubs .direnv/bundler-bin
Если вы хотите узнать, что именно делают эти команды, сейчас: cat
direnv stdlib
| Меньшеисточник
Mineshaft - это проект, над которым я работал в течение некоторого времени и продолжаю работу по разработке.
Он предлагает возможность как создавать виртуальные среды, схожие с тем, как работает virtualenv, так и глобальную установку Ruby.
источник