CircleCIで"You must use Bundler 2 or greater with this lockfile."のエラーの解決方法

投稿日時:
Ruby


先ほどGemfileを更新したらCircleCIでエラーが出ました。


以下のエラーです。


$ #!/bin/bash --login
$ bundle install --path vendor/bundle --jobs=4 --retry=3
You must use Bundler 2 or greater with this lockfile.
Exited with code 20

先日bundlerの2系が出ましたが、ローカルで使用しているbundlerを2系にアップデートしたのが原因のようです。



bundlerの2系で作ったGemfile.lockは2系でしか読み取れないようですね。



1系でGemfile.lock作り直すという方法もあるらしいのですが、せっかくなのでIに2系のbundlerをインストールすることにしました。



CIのconfig.ymlに以下を追記しました。

ちなみに使用しているdokcerのimageはcircleci/ruby:2.4.1-node-browsersです。


steps:
  - checkout
  - run: gem update bundler

これだけで普通にいけました。



ただ、これだけだと新たに以下のエラーが発生。


$ #!/bin/bash --login
$ bin/rails db:create && bin/rake ridgepole:apply
Created database 'db_name_test'
Could not find rake-12.3.2 in any of the sources
Run `bundle install` to install missing gems.
Exited with code 1


bundle installは成功してるのにrakeが見つからないとのエラーです。


コマンドを以下に変更することで成功しました。


$ #!/bin/bash --login
$ bundle exec rails db:create && bundle exec rake ridgepole:apply

bin/rake -> bundle exec rakeに変更した感じです。



ただbundle execも結局bin/を見ているので、bin/でOKって記事をどこかで読んだ記憶もあり、少し深掘りして調べてみようと思います。