Ruby gem のインストールが Homebrew で機能しない

概要

sudo gem install … でインストールした gem が実行できません (コマンドが見つからないというメッセージが表示されます)。

これらは、Brew のインストール ディレクトリである /usr/local/Cellar/ にインストールされるようです (また、/Library/Ruby/ 内の gem も機能しません)。 gem を実行可能にするために他に何かする必要がありますか?私は Mac OS X 10.6 で Zsh を使用しており、Brew では Ruby v1.8 を使用しています。

編集: 現在は動作しているようです。数時間外出して、戻ってきてもう一度試してみました。

解決策

自作はいいですね。ただし、brew や npm とは異なり、gem は /usr/local/bin にエイリアスを自動的に作成しません。

私は非常にシンプルなアプローチを採用しました(2020年3月現在)。

# Based on "`brew --prefix ruby`/bin"
export PATH=/usr/local/opt/ruby/bin:$PATH
# Based on "`gem environment gemdir`/bin"
export PATH=/usr/local/lib/ruby/gems/3.0.0/bin:$PATH

これを .bashrc (または .bash_profile、.zshrc など) に追加します。

それでおしまい!これで、すべての Ruby ビンとインストールされた gem がシェルから利用できるようになります。

Homebrew の古いバージョン (2017 年より前) では、ruby20 と呼ばれる Ruby 2 用の別のパッケージがあり、代わりに次のスニペットを使用します。

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

このラインは当時必要とされた唯一のラインでした。しかし、Ruby 2.1 では、gem は別のディレクトリに移動されました。 /usr/local/opt/ruby/bin ではなく、/usr/local/lib/ruby/gems/2.0.0/bin にあります (「2.0.0」は Gem の目的における最後のメジャー Ruby バージョンです) 。

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.7.0

これらのツールは、Homebrew と Gem の間を自動的に橋渡しすることを目的としていました。

私はこれらを使用したことがありませんが、あなたにとっては役立つかもしれません。