[rubygems/rubygems] Skip warnings if bundled gems is already loaded

https://github.com/rubygems/rubygems/commit/9583a7eb82
This commit is contained in:
Hiroshi SHIBATA 2023-07-21 10:21:39 +09:00 committed by git
parent 422144d220
commit 8fbe7d0295
2 changed files with 28 additions and 7 deletions

View File

@ -233,6 +233,7 @@ module Bundler
kernel_class.send(:define_method, :require) do |file| kernel_class.send(:define_method, :require) do |file|
name = file.tr("/", "-") name = file.tr("/", "-")
if (::Gem::BUNDLED_GEMS.keys - specs.to_a.map(&:name)).include?(name) if (::Gem::BUNDLED_GEMS.keys - specs.to_a.map(&:name)).include?(name)
unless $LOADED_FEATURES.any?{|f| f.end_with?("#{name}.rb", "#{name}.#{RbConfig::CONFIG['DLEXT']}")}
target_file = begin target_file = begin
Bundler.default_gemfile.basename Bundler.default_gemfile.basename
rescue GemfileNotFound rescue GemfileNotFound
@ -241,6 +242,7 @@ module Bundler
warn "#{name} is not part of the default gems since Ruby #{::Gem::BUNDLED_GEMS[file]}." \ warn "#{name} is not part of the default gems since Ruby #{::Gem::BUNDLED_GEMS[file]}." \
" Add it to your #{target_file}." " Add it to your #{target_file}."
end end
end
kernel_class.send(:no_warning_require, file) kernel_class.send(:no_warning_require, file)
end end
if kernel_class == ::Kernel if kernel_class == ::Kernel

View File

@ -1574,6 +1574,25 @@ end
expect(err).to include("csv is not part of the default gems") expect(err).to include("csv is not part of the default gems")
end end
it "don't warn with bundled gems when it's loaded twice" do
build_repo4 do
build_gem "rack"
end
install_gemfile <<-G
source "#{file_uri_for(gem_repo4)}"
gem "rack"
G
ruby <<-R
require 'csv'
require 'bundler/setup'
require 'csv'
R
expect(err).to be_empty
end
it "don't warn with bundled gems when it's declared in Gemfile" do it "don't warn with bundled gems when it's declared in Gemfile" do
build_repo4 do build_repo4 do
build_gem "csv" build_gem "csv"