Project

General

Profile

Bug #15622

Default version of Bundler incorrectly invoked when using binstubs

Added by schneems (Richard Schneeman) over 1 year ago. Updated over 1 year ago.

Status:
Rejected
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.6.1p33 (2019-01-30 revision 66950) [x86_64-linux]
[ruby-core:91622]

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

Is duplicate of Ruby master - Bug #15582: default/bundler-1.17.2.gemspec has no file listClosedhsbt (Hiroshi SHIBATA)Actions

Also available in: Atom PDF