diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/bundler/rubygems_ext.rb | 23 | ||||
| -rw-r--r-- | lib/bundler/rubygems_integration.rb | 24 |
2 files changed, 23 insertions, 24 deletions
diff --git a/lib/bundler/rubygems_ext.rb b/lib/bundler/rubygems_ext.rb index 1520deaf31..b96edd5e2d 100644 --- a/lib/bundler/rubygems_ext.rb +++ b/lib/bundler/rubygems_ext.rb @@ -29,29 +29,6 @@ unless Gem.ruby_version.to_s == RUBY_VERSION || RUBY_PATCHLEVEL == -1 end module Gem - - BUNDLED_GEMS = { - "rexml" => "3.0.0", - "rss" => "3.0.0", - "webrick" => "3.0.0", - "matrix" => "3.1.0", - "net-ftp" => "3.1.0", - "net-imap" => "3.1.0", - "net-pop" => "3.1.0", - "net-smtp" => "3.1.0", - "abbrev" => "3.4.0", - "observer" => "3.4.0", - "getoptlong" => "3.4.0", - "resolv-replace" => "3.4.0", - "rinda" => "3.4.0", - "nkf" => "3.4.0", - "syslog" => "3.4.0", - "drb" => "3.4.0", - "mutex_m" => "3.4.0", - "csv" => "3.4.0", - "base64" => "3.4.0" - }.freeze - class Specification include ::Bundler::MatchMetadata include ::Bundler::MatchPlatform diff --git a/lib/bundler/rubygems_integration.rb b/lib/bundler/rubygems_integration.rb index 8f2b6994ed..29940d75f5 100644 --- a/lib/bundler/rubygems_integration.rb +++ b/lib/bundler/rubygems_integration.rb @@ -1,6 +1,10 @@ # frozen_string_literal: true require "rubygems" unless defined?(Gem) +begin + require "bundled_gems" unless defined?(Gem::BUNDLED_GEMS) +rescue LoadError +end module Bundler class RubygemsIntegration @@ -225,6 +229,20 @@ module Bundler end end + def reverse_rubygems_kernel_mixin + # Disable rubygems' gem activation system + if Gem.respond_to?(:discover_gems_on_require=) + Gem.discover_gems_on_require = false + else + kernel = (class << ::Kernel; self; end) + [kernel, ::Kernel].each do |k| + if k.private_method_defined?(:gem_original_require) + redefine_method(k, :require, k.instance_method(:gem_original_require)) + end + end + end + end + def replace_require(specs) return if [::Kernel.singleton_class, ::Kernel].any?{|klass| klass.respond_to?(:no_warning_require)} @@ -370,7 +388,11 @@ module Bundler def replace_entrypoints(specs) specs_by_name = add_default_gems_to(specs) - replace_require(specs) + if defined?(::Gem::BUNDLED_GEMS) + replace_require(specs) + else + reverse_rubygems_kernel_mixin + end replace_gem(specs, specs_by_name) stub_rubygems(specs) replace_bin_path(specs_by_name) |
