Bug #15622
Default version of Bundler incorrectly invoked when using binstubs
Description
When trying to run a binstub with Ruby 2.6.1 with Bundler 2.0.1 on the system, the wrong version of Bundler gets loaded which then fails when the Gemfile.lock points to a 2.x version (since the default version that ships with Ruby is Bundler 1.x. While this was discovered on Heroku and is discussed in this issue https://github.com/heroku/heroku-buildpack-ruby/issues/856#issuecomment-467205932 I was able to replicate the problem fairly easily with docker. I've provided instructions below.
Reproduction¶
Start a docker image with Ruby 2.6.1
docker run -it --rm ruby:2.6.1 bash
Install bundler, rails, make a new app, and remove the begin/rescue/end
from the bin/rake
binstub. To trigger the error run a rake
command without bundle exec
:
gem install bundler -v 2.0.1 gem install rails -v 6.0.0.beta1 rails new ruby-2-6-bundler-2-issue cd ruby-2-6-bundler-2-issue cat <<EOT > bin/rake #!/usr/bin/env ruby require_relative '../config/boot' require 'rake' Rake.application.run EOT rake -T
Output:
You must use Bundler 2 or greater with this lockfile.
Expected:
Bundler 2 is available on the system, and is the latest version, so it should be invoked instead of the default bundler version.
Related issues
Updated by dzunk (Matt Duszynski) about 2 years ago
I was able to reproduce this with the steps provided, and it seems to work after a gem update --system
. Possibly a bug in a particular version of Rubygems?
Updated by hsbt (Hiroshi SHIBATA) about 2 years ago
- Assignee set to hsbt (Hiroshi SHIBATA)
- Status changed from Open to Assigned
Updated by deivid (David RodrÃguez) about 2 years ago
Forgot to comment here. I'm pretty sure this is the same as https://bugs.ruby-lang.org/issues/15582? The fix for it should be released in the next patch level version
For the moment gem update --system
indeed workarounds it, since it forces the reinstallation of the default bundler gem, which is the culprit here (its gemspec's file list is incomplete).
Updated by hsbt (Hiroshi SHIBATA) almost 2 years ago
- Backport changed from 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN to 2.4: DONTNEED, 2.5: DONTNEED, 2.6: DONTNEED
- Status changed from Assigned to Rejected
I couldn't reproduce the latest ruby_2_6 branch with fixed #15582. Please wait for releasing next stable version 2.6.2.
Updated by hsbt (Hiroshi SHIBATA) almost 2 years ago
- Is duplicate of Bug #15582: default/bundler-1.17.2.gemspec has no file list added