Bundler: You must use Bundler 2 or greater with this lockfile

Solution 1:

I had a similar experience.

Here's how I solved it

Display a list of all your local gems for the bundler gem

gem list bundler

N/B: The command above is for rbenv version manager, the one for rvm might be different

This will display the versions of the bundler gem installed locally

bundler (2.1.4, default: 1.17.2)

Note: Your versions might differ from the one here

if you don't have bundler version 2 installed locally, then run

gem install bundler

OR

gem install bundler -v 2.1.4

Note: Replace 2.1.4 with the version you want to install

if you have bundler version 2 already installed locally or just installed it, then you need to simply install an update for RubyGems Package Manager locally. To do this, run

gem update --system

And then finally run

bundle update --bundler

For Docker projects in Ruby on Rails

If you're experiencing this issue when trying to build your application using Docker, simply do this:

  1. Delete the Gemfile.lock file

  2. Please don't create it again by running bundle install.

  3. Run your docker build or docker-compose build command as appropriate to build your project.

This will re-create the Gemfile.lock file and setup the appropriate version of bundler necessary for your project in the Gemfile.lock file.

N/B: As a side note, you can also add this environment variable to your Dockerfile with the Bundler version defined.

ENV BUNDLER_VERSION=2.1.4

That's all.

I hope this helps.

Solution 2:

A bit late to the party but I just ran into this today as well, and this solution avoids having to uninstall Bundler: just run

heroku buildpacks:set https://github.com/bundler/heroku-buildpack-bundler2

as per discussion on the Bundler issue here.