[rubygems/rubygems] Extract Gem::BUNDLED_GEMS from Bundler

https://github.com/rubygems/rubygems/commit/e30e86aa60
This commit is contained in:
Hiroshi SHIBATA 2023-07-21 12:21:44 +09:00 committed by git
parent 8fbe7d0295
commit 979d1fa5fe
3 changed files with 40 additions and 24 deletions

View File

@ -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

View File

@ -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)

View File

@ -1566,7 +1566,12 @@ end
gem "rack"
G
ruby <<-R
module Gem
remove_const :BUNDLED_GEMS if defined?(BUNDLED_GEMS)
BUNDLED_GEMS = { "csv" => "1.0.0" }
end
require 'bundler/setup'
require 'csv'
R
@ -1585,6 +1590,10 @@ end
G
ruby <<-R
module Gem
remove_const :BUNDLED_GEMS if defined?(BUNDLED_GEMS)
BUNDLED_GEMS = { "csv" => "1.0.0" }
end
require 'csv'
require 'bundler/setup'
require 'csv'
@ -1604,6 +1613,10 @@ end
G
ruby <<-R
module Gem
remove_const :BUNDLED_GEMS if defined?(BUNDLED_GEMS)
BUNDLED_GEMS = { "csv" => "1.0.0" }
end
require 'bundler/setup'
require 'csv'
R
@ -1625,6 +1638,10 @@ end
G
ruby <<-R
module Gem
remove_const :BUNDLED_GEMS if defined?(BUNDLED_GEMS)
BUNDLED_GEMS = { "csv" => "1.0.0", "net-imap" => "0.0.1" }
end
require 'bundler/setup'
begin
require 'net/imap'