ruby
のバージョン変更が効かない!!って困ったけど特に問題も見つからなくて
色々調べたらrbenv
のことにちょっと詳しくなったっていうお話です。
予め断りますが、高度なお話は期待しないでください。
さて早速ターミナル操作ですよ、と・・・
❯ rbenv global 2.3.1
❯ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin18]
おんやぁ・・・???
❯ rbenv versions
system
2.3.1
* 2.5.1 (set by /hogehoge/.ruby-version)
あんれぇ・・・???
ということになったわけです。
困りました。
❯ which ruby
/Users/username/.rbenv/shims/ruby
❯ cat ~/.zshrc
# (bashなら ~/.bash_profile など)
中略
eval "$(rbenv init -)"
中略
ruby
の読み込みパスが上記の通りなら
間違いなくrbenv
が今使っているruby
を管理をしている。
一応、シェルのプロファイルの中を読んでみると
rbenv
のパスが通っているはずなので
シェルはきちんとrbenv
を読み込んで実行できている。
(というかターミナルでrbenv
コマンド通ってるしね・・・。)
とりあえず大枠でrbenv
はエラーなく正常動作しているはず・・・。
なのになぜ!?
さてこれはどういうことか。
#結論をいうと何も異常がない可能性があります。
以下を試してみてください。
❯ cd ~
❯ rbenv versions
system
* 2.3.1 (set by /Users/username/.rbenv/version)
2.5.1
↑の状態はrbenv
でlocal
環境に設定されたruby
バージョンを読んでいます。
つまりきちんとコマンド通りglobal
バージョンの設定変更はできています。
そう、初めからちゃんとバージョン切り替えできていたんです
・・・・global
のね!
##どういうことか説明しますと
そもそもrbenv
はruby
のバージョン管理を目的としたソフトです。
(たぶんrb=rubyの environment=環境 の管理みたいなネーミング?)
通常にruby
をインストールすると
そのPCでは常時同じバージョンのruby
しか使えません。
しかし、rbenv
を使い、rbenv
フォルダ以下に
複数のruby
をインストール=管理することで
プロジェクトごとに異なるバージョンのruby
を使い分けることができるというものです。
global
というのは、そのPCがデフォルトで使うバージョンを設定することです。
で、local
ってのがPCの中の一部、
例えば特定のプロジェクトファイル以下で使うバージョンを指定することです。
このlocal
でのバージョン指定をしているのが.ruby-version
というファイルです。
このファイルがあるフォルダ以下には
.ruby-version
ファイルに記載されたバージョンのruby
が動きます。
さてここで先程までのターミナルのログを再確認みましょう
ローカルバージョンのログとグローバルバージョンのログをよく比較してみてください。
❯ rbenv versions
* 2.5.1 (set by /hogehoge/.ruby-version)
* 2.3.1 (set by /Users/username/.rbenv/version)
お分かりでしょうか。
set by以下が違いますね?
これはrbenv
がバージョンを参照している管理ファイルの所在です。
上のローカルバージョンでは各フォルダの.ruby-version
そしてグローバルバージョンでは/Users/username/.rbenv/version
です。
わかってる方は記事の最初の方で即ツッコミ入れてたわけですね、、、
m9(^Д^)プギャープスプス何やってんのこいつwww
とか言われてたわけです・・・orz
さてではこの2つのファイルの中身はというと・・・
❯ cat /hogehoge/.ruby-version
2.5.1
❯ cat /Users/username/.rbenv/version
2.3.1
ものっすごいシンプル!!
たったこれだけの記載でバージョン管理がされてるんですね。
(他にもこのファイルを読み込む別のinitファイルあるかもしれませんけど)
謎は全て解けた!
謎も何も・・・rbenv
のこと何もわかってなかったっていう恥ずかしい話でした。
そういえば金田一少年は近年37才サラリーマンになって
相変わらず事件に巻き込まれる生活してるみたいです。
##参考記事
今回こちらの記事を参考にさせていただきました。
https://qiita.com/eijish/items/ae16c2c3e4564ab5a6c5
##次回予告
というか実は前回(プライベート記事で)
localhost
がiphoneから見られねぇ困った!の記事にすると予告してたのですが
そちらもこれから(個人的には割と必要性が高いと感じるので)環境テストしていく予定です。
ある程度まとまった検証ができ次第記事にしてみようと思います。