Just do IT

思うは招く

Warning: the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4) を解決

環境

  • ruby 2.6.5
  • Rails 6.0.2.1
  • Mac/Homebrew環境
  • Bundler version 2.1.4

問題

あるRailsプロジェクトのディレクトリ下で、

rails s

でサーバーを起動しようとすると次の警告やエラーが出て実行されない。

Warning: the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.1.4`.
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.1.4`

「あなたが今使ってるBundlerは2.1.2で、Gemfile.lockに書かれてるのは2.1.4だよ。バージョンをGemfile.lockに合わせて2.1.4にしてよ。アップデートするなら、gem install bundler:2.1.4bundle update --bundlerを試してみたら。」

と言われているのだが、インストールしたbundlerはすでに

bundle -v
Bundler version 2.1.4

と、2.1.4と同じバージョンを使っている。 もちろん、gem install bundler:2.1.4bundle update --bundlerを試しても解決しない。

解決

rails s

ではなく、

bin/rails s
もしくは
bundle exec rails s

にしたら解決した。

bin/railsコマンドは、アプリケーションのルートディレクトリ直下のbinディレクトリにあるrailsというスクリプトを実行している。これはbundle execと同じ意味になる。 これで、Gemfileどおりのgemを利用できる環境上で、railsコマンドを実行できる。

k-koh.hatenablog.com