Railsでプロジェクトを起動したときに以下のようなエラー(警告)が発生することがあります。
Warning: the running version of Bundler (2.1.4) is older than the version that created the lockfile (2.2.15). We suggest you to upgrade to the version that created the lockfile by running gem install bundler:2.2.15.
ここでは、このエラーの原因と対処法、すなわちRailsでbundlerのdefaultのバージョンを変更する方法についてまとめています。
gem install bundler:バージョン
を実行してもbundlerのバージョンが変更しないときにも使えます。
エラー(警告)の内容
Railsでプロジェクトを起動する以下のエラー(警告)は、
Warning: the running version of Bundler (2.1.4) is older than the version that created the lockfile (2.2.15). We suggest you to upgrade to the version that created the lockfile by running gem install bundler:2.2.15.
現在のBundlerは2.1.4が使われているが、lockfileで指定されているのは2.2.15なので、バージョンアップしてくれという内容です。
しかし、上記で指定されているコマンドgem install bundler:2.2.15
を実行しても、bundlerが切り替わらず、同じ警告がで続けるといった症状が発生します。
なお、指定のbundlerは正しくインストールされている状態でも切り替わりません。
$ bundler -v
Bundler version 2.2.15
gem install bundler:~でバージョンが切り替わらない原因
Railsはgemで複数のbundlerのgemを管理することができます。
しかし、rails new
でプロジェクトを起動した時にその時点でのbundlerのバージョンがデフォルトとして指定されてしまいます。
このため、新しく「gem install bundler:~」でbundlerの新しいバージョンをインストールしても、Rialsのアプリケーションが使うのは古いbundlerのバージョンになります。
例えば、以下のようにgemでbundlerの状態を見ると、バージョンは「2.2.15」と「2.1.2」があり、「2.1.2」がデフォルトに指定されています。
$ gem list | grep bundler
bundler (2.2.15, default: 2.1.2)
このため、defaultで指定しているバージョンを切り替える必要があります。
対処法
対処法はとても簡単で、以下のコマンドを実行すれば、bundlerを新しいバージョンをdefaultとして設定することができます。
$ gem update --system
gem自体のバージョンをアップデートするコマンドです。
アップデートには数分かかります。
実例
#gemをアップデート
$ gem update --system
Updating rubygems-update
(省略)
#バージョンの確認
$ gem list | grep bundler
bundler (default: 2.2.15)
defaultが新しいバージョンに切り替わっていることがわかります。
補足
他のサイトでは、lib\ruby\gems\2.6.0\specifications\default\
といったディレクトリを削除してからgem install bundler
を実行するという内容を紹介していました。
ですが、同じファイルが複数あるなど、目的のファイルにたどり着くのが難しいです。
$ gem update --system
を使う方が簡単です。
bundlerとは何か?
そもそも、bundlerとは何かというと、依存関係にあるgemパッケージを一括でインストールやアップデートしてくれる便利なパッケージです。