【Rails】bundlerのdefaultを変更する方法。 Warning: the running version of Bundler (x.x.x) is older than the version that created the lockfileの対処法。

rails-prograshi(プロぐらし)-kv Rails
記事内に広告が含まれていることがあります。
[PR]

Docker上に構築したRailsで以下のようなエラーが出るときの対処法について。

Warning: the running version of Bundler (x.x.x) is older than the version that created the lockfile

エラー例

Warning: the running version of Bundler (2.1.4) is older than the version that created the lockfile (2.2.22). We suggest you to upgrade to the version that created the lockfile by running gem install bundler:2.2.22.

現在使っているbundlerのバージョン2.1.4だが、lockfileで指定されているバージョンは2.2.22で、それよりも古いので、lockfileで指定したバージョンに変更することを推奨するという警告。

警告(Warning)なので、対応しなくてもプログラムは動くが、rails系のコマンドを実行するたびに毎回表示される。

エラー対処法

Railsアプリケーションのルートディレクトリで gem install bundler:2.2.22 を実行する。

Dockerの場合はコンテナの中から実行する。

#DockerのRailsコンテナに入る
$ docker exec -it <コンテナ名> bash
root@93ac4f1a0c1d:/#

#bundlerのインストール
root@93ac4f1a0c1d:/rails-vue# gem install bundler:2.2.22
Fetching bundler-2.2.22.gem
Successfully installed bundler-2.2.22
1 gem installed


以上でエラーが表示されなくなる。


bundlerインストール後もエラーが出続ける場合の原因と対処法

上記で指定されているコマンドgem install bundler:2.2.22を実行して、指定のbundlerは正しくインストールされても、bundlerが切り替わらず、同じ警告がで続ける場合があります。

▼bundlerは正しくインストールされている

$ bundler -v
Bundler version 2.2.22

原因

gemで複数のbundlerのgemを管理でき、rails newでプロジェクトを起動した時にその時点でのbundlerのバージョンがデフォルトとして指定されてしまう。

▼インストールされているバージョンの確認

$ gem list | grep bundler
bundler (2.2.22, default: 2.1.4)

2.2.22と2.1.4の2つがインストールされていて、そのうち、2.1.4がデフォルトとして設定されている。

対処法

gem自体のバージョンをアップデートする。(5分ほどかかる)

$ gem update --system


▼実例

#gemをアップデート
$ gem update --system
Updating rubygems-update
(省略)


#バージョンの確認
$ gem list | grep bundler
bundler (default: 2.2.22)

デフォルトのバージョンが2.2.22に切り替わった。

以上で設定完了。


bundlerとは?

bundlerとは、Rubyのパッケージであるgem同士の互換性を保つためのツールです。

bundle installを実行すると、bundlerが、gemfileに記述されているgemを動かすために必要な他のパッケージや最適なバージョンに合ったものを自動で探してインストールしてくれます。

bundler自体もgemの一種です。

タイトルとURLをコピーしました