Я использую rbenv, так почему в моей системе есть два пути Gem? (OS X Lion) - программирование
Подтвердить что ты не робот

Я использую 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

Любая причина наличия двух мест? Любопытные умы хотят знать.

4b9b3361

Ответ 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).