ごんれのラボ

iOS、Android、Adobe系ソフトの自動化スクリプトのことを書き連ねています。

rbenv global で ruby のバージョンが切り替えられなくて困った

概要

久しぶりに自宅 Mac の rbenv で ruby のバージョンを切り替える必要があり、

$ rbenv global system

とコマンドを叩いてみたが、rbenv でインストールしたバージョンから変わらなかった。
困った。

環境

Macbook Air Mid 2012
macOS Sierra 10.12.4

結論

/Users/(user_name)/.ruby_version というファイルのせいで、rbenv で選択している ruby のバージョンが更新されていなかった模様。
/Users/(user_name)/.ruby_version の名前を、/Users/(user_name)/.ruby_version.bak に変更して、様子見をすることにした。

試行錯誤

.bashrc を確認

ちゃんと設定されていた。

eval "$(rbenv init -)"

$PATH を確認

いろいろ入ってるけど、/usr/bin より先に /Users/(user_name)/.rbenv/shims が出力されているので、問題ないはず。

$ echo $PATH
/Users/(user_name)/.pyenv/shims:/Users/(user_name)/.rbenv/shims:/Users/(user_name)/.nodebrew/current/bin:/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/eclipse/android/platform-tools:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/share/dotnet:/Library/Frameworks/Mono.framework/Versions/Current/Commands

ruby のパスを確認

あってた。

$ which ruby
/Users/(user_name)/.rbenv/shims/ruby

rbenv を一度アンインストールして、再インストール

アンインストール。

$ brew uninstall rbenv

削除されたことを確認。

$ which rbenv

出力されないので削除成功。
再度、インストール。

$ brew install rbenv

インストールされたことを確認。

$ which rbenv
/usr/local/bin/rbenv
$ rbenv -v
rbenv 1.1.1

インストール成功。

バージョンが切り替えられるようになったか確認したが、症状は改善せず。

新たに v.2.4.1 の ruby をインストール

rbenv install 2.4.1

成功。

rbenv でインストール済みのバージョンを削除

$ rbenv uninstall 2.3.0

削除した結果、

$ rbenv global 2.4.1

ってコマンド叩くと、rbenv から「2.3.0 なんてバージョン見つからない」って怒られるようになったw
ですよねー。
知ってた。

とあるファイルの存在に気づいた

$ rbenv versions
  system
* 2.4.1 (set by /Users/(user_name)/.ruby_version)

.ruby_version is なに?
調べたらこのファイルで ruby の current version を管理している模様。
そして、

/Users/(user_name)/.rbenv/version

というファイルの存在にも気づく。

$ rbenv global (ruby_version)

というコマンドを叩いたときに更新されていたのは、

/Users/(user_name)/.rbenv/version

だった。

更新されていないファイルが悪さしている?

リネームして読み込まれないようにしてみる。

$ mv /Users/(user_name)/.ruby_version /Users/(user_name)/.ruby_version.bak

試してみる。

$ rbenv versions
  system
* 2.4.1 (set by /Users/(user_name)/.ruby_version)
$ rbenv global system
$ rbenv versions
* system
 2.4.1 (set by /Users/(user_name)/.ruby_version)

直った!!!

まとめ

強引に対処してしまったので、これでいいのか自信がないので、「こんなことのある」程度で読んでくださいまし。