Skip to content

Commit 8683fae

Browse files
Avoid more warnings when using RubyGems with old Bundler
We were only avoiding them when the RUBYGEMS_GEMDEPS variable is used. Avoid the warnings in general, whenever the entrypoint to Bundler is `require`.
1 parent 9e7018b commit 8683fae

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

.github/workflows/install-rubygems.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ jobs:
8181
run: bundle install --help | grep -q BUNDLE-INSTALL
8282
- name: Check bundler fallback man pages are properly picked up
8383
run: sudo rm $(which man) && bundle install --help
84+
- name: Install older bundler
85+
run: gem install bundler:2.6.9
86+
- name: Run older bundler without warnings
87+
run: |
88+
BUNDLER_VERSION=2.6.9 ruby -rbundler/setup -e1 2> errors.txt || (cat errors.txt && exit 1)
89+
test ! -s errors.txt || (cat errors.txt && exit 1)
8490
- name: Build bundler
8591
run: gem build bundler.gemspec
8692
working-directory: ./bundler

lib/rubygems.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -640,9 +640,8 @@ def self.load_safe_marshal
640640
# Load Bundler extensions to RubyGems, making sure to avoid redefinition
641641
# warnings in platform constants
642642

643-
def self.load_bundler_extensions
644-
require "bundler/version"
645-
return if Bundler::VERSION >= "2.6.9"
643+
def self.load_bundler_extensions(version)
644+
return unless version <= "2.6.9"
646645

647646
previous_platforms = {}
648647

@@ -1169,7 +1168,6 @@ def self.use_gemdeps(path = nil)
11691168

11701169
ENV["BUNDLE_GEMFILE"] ||= File.expand_path(path)
11711170
require_relative "rubygems/user_interaction"
1172-
Gem.load_bundler_extensions
11731171
require "bundler"
11741172
begin
11751173
Gem::DefaultUserInteraction.use_ui(ui) do

lib/rubygems/core_ext/kernel_require.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,11 @@ def require(path) # :doc:
6464
rp
6565
end
6666

67-
Kernel.send(:gem, name, Gem::Requirement.default_prerelease) unless
68-
resolved_path
67+
next if resolved_path
68+
69+
Kernel.send(:gem, name, Gem::Requirement.default_prerelease)
70+
71+
Gem.load_bundler_extensions(Gem.loaded_specs[name].version) if name == "bundler"
6972

7073
next
7174
end

0 commit comments

Comments
 (0)