Я использую rbenv, так почему в моей системе есть два пути Gem? (OS X Lion)
Чтобы уточнить, я использую rbenv
для управления моими рубиновыми версиями. У меня создалось впечатление, что двоичные файлы управляются как shims
в соответствующем каталоге рубиновой версии.
Вот что показывает моя система, когда я запускаю среду gem (я исключаю ненужные части):
- GEM PATHS:
- /Volumes/Data/nathan/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1
- /Volumes/Data/nathan/.gem/ruby/1.9.1
Любая причина наличия двух мест? Любопытные умы хотят знать.
Ответы
Ответ 1
Я думаю, что я понял ответ на этот вопрос, поэтому я опубликую его.
Rbenv позволяет использовать глобальную и/или локальную версию ruby. Таким образом, как только рубин будет установлен и управляется через rbenv, вы можете объявить его глобальной версией рубина, используемой всей вашей системой.
Аналогично, вы можете объявить локальную версию ruby в пределах данного каталога (например: конкретный проект рельсов).
Файл .gem в вашем домашнем пути используется глобальной рубиновой версией, где, поскольку та, которая спрятана в каталоге rbenv, используется локальной версией ruby.
Примечание. Вы можете (по какой-либо причине) объявить локальную версию, которая совпадает с глобальной версией. В этом случае локальная версия будет полагаться на файлы gem, которые находятся в более глубоком каталоге rbenv, вместо каталога ~/.gem.
Ответ 2
Имейте в виду, что менеджеры рубиновой версии, такие как rbenv и rvm, являются относительно недавними творениями. До того, как они существовали, пользователь admin обычно устанавливал ruby в общесистемном местоположении, таком как /usr/local. Но не-админам нужно место для установки собственных драгоценных камней, поскольку у них не было разрешения на запись в /usr/local. Таким образом, создатели rubygems решили добавить вторичный путь драгоценных камней в текущий домашний каталог пользователя, который будет похож на структуру системы.
Вот пример того, как выглядели дорожки драгоценных камней в старые времена:
- /usr/local/lib/ruby/gems/1.9.1
- /Users/kelvin/.gem/ruby/1.9.1
По-прежнему могут быть машины, где рубин установлен так, и у вас все еще есть возможность использования автоматической вторичной линии драгоценных камней. Конечно, вы также можете добавлять дополнительные пути, используя переменную среды GEM_PATH, но автоматическая настройка подходит для обработки общего случая.
Если у вас есть права администратора или вы используете диспетчер версий, вы можете просто игнорировать файл ~/.gem в качестве артефакта, реликвии прошлого, если хотите.
Ответ 3
- /Volumes/Data/nathan/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1
от rbenv, так что ruby ищет установленные gem rbenv.
- /Volumes/Data/nathan/.gem/ruby/1.9.1
По-видимому, rbenv не ограничивается своими собственными драгоценными камнями, а скорее включает в себя также драгоценные камни из рубина системы, но только те, которые установлены как пользователь (через gem --user-install
).