From bc3ac86795877b752c082230e561f547e682e951 Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Mon, 28 Nov 2022 14:52:13 +0900 Subject: [PATCH] [rubygems/rubygems] require bundler/setup only when Bundler is not defined ... to prevent "circular require" when `--disable-gems` is used. This is a simplified case of https://github.com/ruby/ruby/commit/e5a0abc5dedfd011986b16e8f8cf5cda476984c9 ``` $ bundle exec ruby -we 'system("ruby", "-w", "--disable-gems", "-e", "")' :85: warning: :85: warning: loading in progress, circular require considered harmful - /home/mame/work/ruby/local/lib/ruby/3.2.0+3/bundler/setup.rb ``` When bundler/setup is require'ed under --disable-gems mode, it loads rubygems by `require "rubygems" unless defined?(Gem)` in https://github.com/rubygems/rubygems/blob/0b1f682a6d65e57b86ba4853cba23cac361c769d/bundler/lib/bundler/rubygems_integration.rb#L3 In this case, require'ing bundler/setup from rubygems.rb is circular. This change makes rubygems.rb to require "bundler/setup" only when `Bundler` is not defined. https://github.com/rubygems/rubygems/commit/b4608dee5e --- lib/rubygems.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 43b1c45288..a869fc4c45 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -1349,4 +1349,4 @@ require_relative "rubygems/core_ext/kernel_gem" require_relative "rubygems/core_ext/kernel_require" require_relative "rubygems/core_ext/kernel_warn" -require ENV["BUNDLER_SETUP"] if ENV["BUNDLER_SETUP"] +require ENV["BUNDLER_SETUP"] if ENV["BUNDLER_SETUP"] && !defined?(Bundler)