gem install bundler 時のエラー対処法(Mac)


こんにちは, Rubyほぼ初心者の自分が環境構築を行ってる際にぶち当たったエラーに対する対処法をお伝えします.

今回の環境構築は次のような順番で行いました.今回エラーがでたのはこのうちの3の部分です.

環境構築手順
1. rbenvのインストール
2. rbenv経由でrubyをインストール
3. bundlerをインストール

bundlerのインストールは次のコマンドで行います.

(base) ****-MacBook-air:~ user$ gem install bundler

ところがこの操作に対して次のようなエラーが出てきてしまいました.

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.

You don't have write permissionswrite permissionというのは専門用語で書き込み許可という意味だそうです.
つまり書き込みの許可がいるみたいです.
つまり,この操作はuserの権限を越えたことをやろうとしている??
ここでgem,rubyのPATHを確認してみます.

(base) ****-MacBook-air:training user$ which gem
/usr/bin/gem
(base) ****-MacBook-air:training user$ which ruby
/usr/bin/ruby

usrディレクトリはuserディレクトリのさらに上の階層であり,userの権限ではアクセスできない部分です.したがって,今回は,userの身分でありながら,上の階層のディレクトリにアクセスしようととしたことが原因であったとわかりました.
そもそもこのような事が起きたのは, gem install bundler をした際に,rbenv側のrubyやgemではなく, システム側(usr/bin)のruby,gemを使ってることが原因でした.
なので以下のコマンドでPATHを設定し直します.

(base) ****-MacBook-air:training user$ export RBENV_ROOT="${HOME}/.rbenv"
(base) ****-MacBook-air:training user$ if [ -d "${RBENV_ROOT}" ]; then    export PATH="${RBENV_ROOT}/bin:${PATH}";    eval "$(rbenv init -)";  fi

完了したら,もう一度rubyとgemのPATHを確認します.

(base) ****-MacBook-air:training user$ which ruby
/Users/user/.rbenv/shims/ruby
(base) ****-MacBook-air:training user$ which gem
/Users/user/.rbenv/shims/gem

これで現在,rubyとgemはrbenvのものを参照してることがわかります.

このあと

(base) ****-MacBook-air:~ user$ gem install bundler

をもう一度試してみたところうまくいきました!