web-dev-qa-db-fra.com

Installer Ruby gemmes ne fonctionne pas avec Home Brew

Les gemmes que j'installe via Sudo gem install ... ne peut pas être exécuté (j'obtiens un command not found). Ils semblent s'installer dans /usr/local/Cellar/ qui est le répertoire d'installation de Brew (aussi, les gemmes dans /Library/Ruby/ ne fonctionne pas non plus). Y a-t-il autre chose que je dois faire pour rendre les gemmes exécutables? J'utilise ZSH sur Mac OS X 10.6 avec Ruby v1.8 pour celui de Brew.

EDIT: Cela semble fonctionner maintenant. Je suis juste sorti quelques heures et suis revenu pour l'essayer à nouveau.

37
john2x

Homebrew est Nice. Cependant, contrairement à brew et npm, gem ne crée pas d'alias dans /usr/local/bin automatiquement.

Solution

J'ai opté pour une approche très simple (à partir de mars 2019):

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

Ajoutez ceci à votre .bashrc (ou .bash_profile, .zshrc, etc.).

C'est ça! Désormais, tous les Ruby bacs et gemmes installés seront disponibles depuis votre Shell!

Dans les anciennes versions de Homebrew (avant 2017), il y avait un package séparé pour Ruby 2 appelé Ruby20, pour lequel vous utiliseriez l'extrait de code suivant à la place:

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

Cette ligne était la seule ligne nécessaire à l'époque. Mais, dans Ruby 2.1 les gemmes ont été déplacées dans un répertoire séparé. Plus sous /usr/local/opt/Ruby/bin, mais à la place à /usr/local/lib/Ruby/gems/2.0.0/bin (où "2.0.0" est la dernière version majeure Ruby version for Gem's)).

Comment ça fonctionne

Homebrew garde une trace de l'endroit où il a installé un package et maintient un lien symbolique pour vous qui pointe là.

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

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

En effet, l'ajout de /usr/local/opt/Ruby à PATH est identique à ce qui suit:

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

Sauf que cette version longue code en dur la version actuellement installée de Ruby et cesserait de fonctionner la prochaine fois que vous mettrez à niveau Ruby.

Quant à Gem, la commande suivante vous indiquera le répertoire exact auquel Gem ajoute de nouveaux packages:

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

Outils

Ces outils étaient destinés à faire automatiquement le pont entre Homebrew et Gem:

Je ne les ai pas utilisés, mais ils pourraient fonctionner pour vous.

122
Timo Tijhof

brew unlink Ruby; brew link Ruby pourrait ajouter des liens symboliques vers /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 est encore assez lent, mais vous pouvez aussi simplement ajouter /usr/local/opt/Ruby/bin au chemin.

$ 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
21
Lri

J'aime la bière maison. Il y a probablement une meilleure façon de le faire, mais si vous exécutez:

gem environment

Cela imprimera une belle liste de tous les chemins pertinents. Recherchez celui intitulé EXECUTABLE DIRECTORY. C'est celui que vous souhaitez ajouter à votre chemin. Dans mon cas, c'est /usr/local/Cellar/Ruby/1.9.3-p362/bin/Ruby mais j'imagine que cela changerait avec une nouvelle version de Ruby.

J'utilise /bin/bash comme mon Shell, mais le processus d'ajout à votre chemin devrait être à peu près le nom.

J'utilise TextWrangler (via les outils de ligne de commande) pour modifier mon .profile fichier. Pour ce faire, c'est juste:

edit ~/.profile

Lorsque vous avez terminé, fermez votre terminal et ouvrez-en un nouveau, ou exécutez:

source ~/.profile
5
Jachin

Vous pouvez être très bien avec Ruby installé par homebrew aussi .. Il vous manque juste la fonctionnalité des jeux de gemmes personnalisés avec homebrew.

faire d'abord:

Sudo nano /etc/paths

cela fera apparaître nano éditeur,

puis ajoutez ce qui suit aux chemins:

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

votre version de Ruby variera probablement.

C'est ça. Il devrait maintenant détecter vos gemmes.

Oh, btw, vous devez Ctrl + X> y> ENTER pour enregistrer un fichier dans nano.

5
sambehera

Au lieu d'utiliser => $(cd $(which gem)/..; pwd)

Vous pouvez utiliser ceci à la place => $(brew --prefix Ruby)/bin

4
LaurentChardin

Je pense que cela évolue un peu.

Ajoutez simplement

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

À votre .bashrc (ou .bash_profile, .zshrc/.bashrc, .. - tout ce que vous utilisez).

Si vous avez un problème avec Ruby lui-même

brew unlink Ruby
brew link Ruby
2
gagarine