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から見られねぇ困った!の記事にすると予告してたのですが
そちらもこれから(個人的には割と必要性が高いと感じるので)環境テストしていく予定です。
ある程度まとまった検証ができ次第記事にしてみようと思います。