はじめに
ごあいさつ
みなさんこんにちは。
今回は、Ruby のバージョン 4.0.0 が正式にリリースされたということで、バージョン変更をするための備忘録をここで書かせてもらいます。
Ruby 4.0.0 Released
今回の変更内容については紹介しませんので、こちらをご覧ください。
私の現状
私は、大学の課外活動でRuby をつかったプロダクトの運用・保守をしており、あまり良くないこともわかってはいる一方で、RUbyのバージョン対応をすることができておらず、 3.2.2 を使っています。
そこに、新機能が実装された 4.0.0 がリリースされたことで、私個人として新たな機能を使ってみようと思い、 4.0.0 をローカル環境に取り入れることとしました。
4.0.0 を入れてみる
端末の状況
なお、私の環境は以下のようになっています。
# ruby -v
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
# rbenv -v
rbenv 1.1.2
# rbenv versions
system
* 3.2.2 (set by /home/user/.rbenv/version)
インストール可能かどうかを確認
まず、リリースされた 4.0.0 のインストールが不可能だったら、元も子もありません。ということで、いちど一覧を出してみましょう。
rbenv install -l
すると、ここに多くのバージョンが出てくると思います。
ここに、インストールしたいバージョンが出てきていれば、インストール まで飛ばしてもらって大丈夫です。
バージョンが見当たらなかった
インストールしたいバージョンが見当たらないこと、そんなこともあります。実際に私はありませんでした。
以下が、今回出たエラー文です。
user@Stapler:~$ rbenv install 4.0.0
ruby-build: definition not found: 4.0.0
The following versions contain `4.0.0' in the name:
jruby-9.4.0.0
truffleruby-24.0.0
truffleruby+graalvm-24.0.0
See all available versions with `rbenv install --list'.
If the version you need is missing, try upgrading ruby-build.
※これ以降は今回の原因のみに対応した記事になっています。
原因
今回は、ruby-build 側がまだRuby 4.0.0 を認識していない状態になっていることで起こったものとなっており、対処法はいたって簡単なものになっています。
今起こっていること
rbenv install -l | grep 4.0
# ここで、 Ruby 4.0.0 が出てこなかった
その結果
rbenv install 4.0.0
# definition not found
となってしまう。
原因
ruby-build が古いこと。
rbenv install が参照する先の定義ファイルは ruby-build になっており、直近にリリースされた Ruby 4.0.0 はまだこちらに反映されていませんでした。
解決方法
ruby-build の更新
こちらは必須。
cd ~/.rbenv/plugins/ruby-build
git pull
念のため rbenv も更新
こちらは任意(推奨)。
cd ~./rbenv
git pull
再度確認
rbenv install -l | grep '^4\.'
# '^4\.' は正規表現
ここで、 4.0.0 が表示されれば成功です。
これでも出ない場合は、もうすこし待ってみるのもいいことだと思います。
該当バージョンのインストール
rbenv install 4.0.0
インストール確認
# rbenv versions
system
* 3.2.2 (set by /home/user/.rbenv/version)
4.0.0
ただし、まだこのように変更をしていないため、"自身が反映させたいプロジェクト(リポジトリ)に移動してから"、以下のコマンドを打ってください。
# このバージョンを長期的(中心)に使いたいとき
rbenv global 4.0.0
# 限定的な範囲で使いたい、あるいは中心プロダクトとの切り替えを多くする
rbenv local 4.0.0
バージョンを戻すとき
Ruby 4 をやめたいときは
rm .ruby-versions
# or
rbenv local 3.2.2 # 自分の変更したいバージョンに設定
最後に
rbenv local ~~
を使うのであれば、毎回
ruby -v
をしておくといいかもしれないです。