Установка камней Ruby, не работающих с Home Brew

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

EDIT: Кажется, он работает сейчас. Я просто вышел на несколько часов и вернулся, чтобы повторить попытку.

Ответ 1

Вам лучше использовать RVM вместо того, чтобы беспокоиться с Homebrew.

Edit

Еще лучше, используйте rbenv.

Для анонимных downvoters

  • если вы используете downvoting, потому что я рекомендовал RVM вместо rbenv, помните, что, когда я писал этот ответ, rbenv можно было бы найти только на Сэм Стивенсон (или в голове), в то время как RVM был стандартом.

  • если вы фанатик из Homebrew, и вы злитесь, потому что я ударил ваш любимый инструмент, пожалуйста, знайте, что я часто использую его сам и считаю его отличным инструментом. Только тогда, используя выделенный инструмент, был лучший вариант. Возможно, два года спустя все улучшилось. Я не знаю. Я знаю, что мой ответ был ограничен Ruby.

Ответ 2

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

Решение

Лично я пошел за гораздо более простой подход:

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

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

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

Раньше с ruby20 требовалось следующее.

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

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

Как это устроено

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

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

$ l /usr/local/opt/ruby
/usr/local/opt/[email protected] -> ../Cellar/ruby/2.5.3_1

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

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

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

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

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

инструменты

Есть/были некоторые инструменты, которые утверждают, что соединяют Homebrew и gem:

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

Ответ 3

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

Ответ 4

Вы можете быть в порядке с рубином, установленным доморощенным тоже. Вам просто не хватает функциональности пользовательских гемзет с доморощенным.

сначала выполните:

sudo nano /etc/paths

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

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

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

Ваша версия рубина, вероятно, будет изменяться.

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

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

Ответ 5

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

gem environment

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

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

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

edit ~/.profile

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

source ~/.profile

Ответ 6

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

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

Ответ 7

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

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

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

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

Если у вас есть проблема с самим ruby ​​

brew unlink ruby
brew link ruby