memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

rbenvの仕組みについて今さら理解する

Rubyのバージョンを3.2.2に切り替えるには以下のようにすればよいと思っていました。

rbenv global 3.2.2

実行後に以下を実行してもsystemになったまま。。。うーん。

rbenv versions

rbenv versionsを実行すると以下の表示になります。ここにヒントがありました。

Desktop % rbenv versions
* system (set by /Users/hogehoge/Desktop/.ruby-version)
  2.7.5
  3.2.2

このメッセージの読み方としては、 rbenvでバージョンがsystemに設定されているんだけど、それってUsers/hogehoge/Desktop/.ruby-versionで指定されているからだよ〜 ということでした。

つまり、Desktopに.ruby-versionというファイルがあり、そこにsystemが指定されているのでバージョンはその指定を優先しています、ということになります。これってrbenv local 3.2.2ってDesktopで実行すると生成されるファイルで、このディレクトリで作業するときには3.2.2にしたいという意思表示をシステム(rbenv)に示したことに起因しているわけでした。つまり自分のせいってことですorz

解決方法としては、この.ruby-versionを削除すればよく 、.ruby-versionがカレントディレクトリ内になければ rbenv globalで指定したバージョンに従って決定されるわけです。はい。

学生に「手順だけ理解せずに意味も考えよう」と思って接しているつもりでしたが自分も同じした💦なんとも情けないことです。

どこまでをブラックボックスにすべきかは難しい時代ですね。すべての仕組みを理解したのがスーパーエンジニアと言われるんでしょうけど、借り物競走的、あるいは巨人の肩に乗る時代ですから、動けばよい場合もあるわけで。言い訳ですけどね。。。

とりあえず勉強になりました(ってすぐに忘れるでしょうけど)。