Rails

rbenv: version `x.x.x` is not installedの解決方法

Rails

 

今回はrbenv: version `x.x.x` is not installedの解決方法について備忘録としてまとめています。動かしたいサンプルアプリケーションのRubyバージョンが異なる場合や最新のRubyバージョンが欲しい場合に使える手順になっています。

【事象】bundle installが実行できない

bundle installを実行するとrbenv 3.1.0のバージョンがインストールされていませんというエラーが吐かれてしまいます。

% bundle install
rbenv: version `3.1.0' is not installed (set by /Users/~~/.ruby-version)

解決方法

インストール可能なバージョン確認

rbenv install --listを実行すると、インストールすることができるバージョンが一覧で表示されます。どうやらインストール可能なバージョンに3.1.0が入っていないようです。

% rbenv install --list

2.6.9
2.7.5
jruby-9.3.2.0
mruby-3.0.0
rbx-5.0
truffleruby-21.3.0
truffleruby+graalvm-21.3.0

Only latest stable releases for each Ruby implementation are shown.
Use 'rbenv install --list-all / -L' to show all local versions.

ruby-buildの実行

最新のバージョンをbrew経由で取得します。同時にbrewのアップグレードも並行して行います。

% brew update && brew upgrade ruby-build

 

もう一度rbenv install --listを実行すると、対象のバージョンである3.1.0が入りました。

% rbenv install --list

2.6.9
2.7.5
3.0.3
3.1.0
jruby-9.3.2.0
mruby-3.0.0
rbx-5.0
truffleruby-21.3.0
truffleruby+graalvm-21.3.0

Only latest stable releases for each Ruby implementation are shown.
Use 'rbenv install --list-all / -L' to show all local versions.

対象バージョンのインストール

対象のバージョン、今回の場合は3.1.0をインストールします。

% rbenv install 3.1.0

適用するバージョンの指定

rbenv versionsを実行すると現在適用されているバージョンを確認することができます。現在では2.6.5が適用されているようです。

% rbenv versions

  system
  2.5.8
* 2.6.5 (set by /Users/~~/.ruby-version)
  3.0.3
  3.1.0

 

以下のコマンドで対象のバージョンに指定できます。

% rbenv local 3.1.0
現在のアプリケーションだけでなく、全体の適用バージョンを変更したい場合はglobalを指定します。

 

再度rbenv versionsを実行すると、3.1.0が適用されていることが分かります。

% rbenv versions

  system
  2.5.8
  2.6.5
  3.0.3
* 3.1.0 (set by /Users/~~/.ruby-version)

 

ここまでの作業でRubyバージョンを変更でき、bundle installを通すことができました。

% bundle install
=> 成功

まとめ

最低限、以下のコマンドでRubyバージョンを変更することができます。

  • brew update && brew upgrade ruby-build
  • rbenv install x.x.x
  • rbenv local x.x.x

参考

How to fix rbenv: version `x.x.x` is not installed

 

 

今回はrbenv: version `x.x.x` is not installedの解決方法について備忘録としてまとめました。サンプルアプリケーションを動かしたい場合、Rubyのバージョン違いで動作しないことがよくあるため、その際の参考になればと思います。