Установка драгоценных камней Ruby не работает с Home Brew - PullRequest
37 голосов
/ 26 июня 2011

Драгоценные камни, которые я устанавливаю через sudo gem install ..., не могут быть выполнены (я получаю command not found). Кажется, они устанавливаются в /usr/local/Cellar/, который является установочным каталогом Brew (также гемы в /Library/Ruby/ тоже не работают). Есть ли что-то еще, что мне нужно сделать, чтобы сделать гем исполняемым? Я использую ZSH в Mac OS X 10.6 с Ruby v1.8 для Brew.

РЕДАКТИРОВАТЬ: Кажется, сейчас работает. Я просто вышел на несколько часов и вернулся, чтобы попробовать это снова.

Ответы [ 6 ]

121 голосов
/ 03 января 2013

Доморощенный это хорошо. Однако в отличие от brew и npm, gem не создает псевдонимы в /usr/local/bin автоматически.

Решение

Я выбрал очень простой подход (по состоянию на март 2019 г.):

export PATH=/usr/local/opt/ruby/bin:$PATH
export PATH=/usr/local/lib/ruby/gems/2.5.0/bin:$PATH

Добавьте это к .bashrc (или .bash_profile, .zshrc и т. Д.).

Вот и все! Теперь все Ruby-контейнеры и установленные драгоценные камни будут доступны из вашей оболочки!

В более старых версиях Homebrew (до 2017 года) для Ruby 2 существовал отдельный пакет под названием ruby20, для которого вместо этого вы использовали бы следующий фрагмент:

export PATH=/usr/local/opt/ruby20/bin:$PATH

Эта строка была единственной, необходимой в то время. Но в Ruby 2.1 гемы были перенесены в отдельный каталог. Больше не в /usr/local/opt/ruby/bin, а вместо /usr/local/lib/ruby/gems/2.0.0/bin (где «2.0.0» - последняя основная версия Ruby для целей Gem).

Как это работает

Homebrew отслеживает, куда он установил пакет, и поддерживает символическую ссылку для вас, которая указывает там.

$ brew --prefix ruby
/usr/local/opt/ruby

$ l /usr/local/opt/ruby
/usr/local/opt/ruby@ -> ../Cellar/ruby/2.5.3_1

Фактически добавление /usr/local/opt/ruby к PATH аналогично следующему:

export PATH=/usr/local/Cellar/ruby/2.5.3_1/bin:$PATH

Кроме того, эта длинная версия жестко кодирует установленную на данный момент версию Ruby и перестает работать при следующем обновлении Ruby.

Что касается Gem, следующая команда скажет вам точный каталог, в который Gem добавляет новые пакеты:

$ gem environment gemdir
/usr/local/lib/ruby/gems/2.5.0

Инструменты

Эти инструменты предназначались для автоматического соединения между Homebrew и Gem:

Я не использовал их, но они могут работать для вас.

21 голосов
/ 27 мая 2013

brew unlink ruby; brew link ruby может добавить символические ссылки к /usr/local/bin/:

$ which sass
$ brew unlink ruby; brew link ruby
Unlinking /usr/local/Cellar/ruby/2.0.0-p0... 20 links removed
Linking /usr/local/Cellar/ruby/2.0.0-p0... 31 symlinks created
$ which sass
/usr/local/bin/sass

brew --prefix ruby все еще довольно медленно, но вы также можете просто добавить /usr/local/opt/ruby/bin к пути.

$ time brew --prefix ruby
/usr/local/opt/ruby
0.216
$ time brew --prefix ruby
/usr/local/opt/ruby
0.076
$ stat -f%Y /usr/local/opt/ruby
../Cellar/ruby/2.0.0-p0
5 голосов
/ 03 января 2013

Мне нравится домашнее пиво. Вероятно, есть лучший способ сделать это, но если вы запустите:

gem environment

Это выведет хороший список всех соответствующих путей. Ищите тот, который помечен EXECUTABLE DIRECTORY. Это тот, который вы хотите добавить на свой путь. В моем случае это /usr/local/Cellar/ruby/1.9.3-p362/bin/ruby, но я думаю, что это изменится с более новой версией Ruby.

Я использую /bin/bash в качестве оболочки, но процесс добавления его к вашему пути должен быть почти таким же.

Я использую TextWrangler (через инструменты командной строки) для редактирования моего .profile файла. Для этого достаточно:

edit ~/.profile

Когда вы закончите, либо закройте свой терминал и откройте новый, либо выполните:

source ~/.profile
5 голосов
/ 18 июля 2012

С ruby ​​можно установить и homebrew. Вам не хватает функциональности пользовательских наборов гембров с homebrew.

сначала сделай:

sudo nano /etc/paths

это вызовет нано-редактор,

затем добавьте следующее к путям:

/usr/local/Cellar/ruby/1.9.3-p194/bin

Ваша версия ruby, вероятно, будет отличаться.

Вот и все. Теперь он должен обнаружить ваши драгоценные камни.

Да, кстати, вам нужно Ctrl + X> y> ENTER, чтобы сохранить файл в nano.

4 голосов
/ 25 февраля 2013

Вместо использования => $(cd $(which gem)/..; pwd)

Вы можете использовать это вместо => $(brew --prefix ruby)/bin

2 голосов
/ 30 мая 2013

Я думаю, что это будет развиваться немного.

Просто добавьте

export PATH=/usr/local/opt/ruby/bin:$PATH

в ваш .bashrc (или .bash_profile, .zshrc / .bashrc, .. - все, что вы используете).

Если у вас проблема с самим рубином

brew unlink ruby
brew link ruby
...