summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBundlerbot <bot@bundler.io>2019-12-25 06:06:07 +0000
committerBundlerbot <bot@bundler.io>2019-12-25 06:06:07 +0000
commit415e336035b0d8d49dd64b31d2dad78de84f4da3 (patch)
treef0b612e918b36b5a43d42602f2b83621f35a2d59
parentb1652efe9a561cf930c0351592459bbc2a2b2c98 (diff)
parentc7c5bcea92b1f791cb12e924e75e2dba77cc37ee (diff)
downloadbundler-415e336035b0d8d49dd64b31d2dad78de84f4da3.tar.gz
Merge #7520
7520: Do `require "rubygems"` only when needed r=hsbt a=mame ### What was the end-user problem that led to this PR? The require causes circular require. See https://github.com/bundler/bundler/pull/7505#issuecomment-568832933 ``` $ touch empty_file $ RUBYGEMS_GEMDEPS=empty_file ./local/bin/ruby -w -e '' /home/mame/work/ruby/local/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92: warning: /home/mame/work/ruby/local/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92: warning: loading in progress, circular require considered harmful - /home/mame/work/ruby/local/lib/ruby/2.7.0/rubygems.rb from <internal:gem_prelude>:1:in `<internal:gem_prelude>' from <internal:gem_prelude>:1:in `require' from /home/mame/work/ruby/local/lib/ruby/2.7.0/rubygems.rb:1417:in `<top (required)>' from /home/mame/work/ruby/local/lib/ruby/2.7.0/rubygems.rb:1203:in `use_gemdeps' from /home/mame/work/ruby/local/lib/ruby/2.7.0/rubygems/user_interaction.rb:47:in `use_ui' from /home/mame/work/ruby/local/lib/ruby/2.7.0/rubygems.rb:1204:in `block in use_gemdeps' from /home/mame/work/ruby/local/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require' from /home/mame/work/ruby/local/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require' from /home/mame/work/ruby/local/lib/ruby/2.7.0/bundler.rb:11:in `<top (required)>' from /home/mame/work/ruby/local/lib/ruby/2.7.0/bundler.rb:11:in `require_relative' from /home/mame/work/ruby/local/lib/ruby/2.7.0/bundler/rubygems_integration.rb:3:in `<top (required)>' from /home/mame/work/ruby/local/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require' from /home/mame/work/ruby/local/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require' ``` ### What was your diagnosis of the problem? Do not `require "rubygems"` blindly. ### What is your fix for the problem, implemented in this PR? Add `unless defined?(Gem)` to make sure it does `require "rubygems"` only when rubygems is not required. ### Why did you choose this fix out of the possible options? This is needed to release Ruby 2.7.0 so I chose the simplest fix. Co-authored-by: Yusuke Endoh <mame@ruby-lang.org>
-rw-r--r--lib/bundler/rubygems_integration.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/bundler/rubygems_integration.rb b/lib/bundler/rubygems_integration.rb
index f06e8d68a9..38a5948163 100644
--- a/lib/bundler/rubygems_integration.rb
+++ b/lib/bundler/rubygems_integration.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-require "rubygems"
+require "rubygems" unless defined?(Gem)
module Bundler
class RubygemsIntegration