Only warn fiddle as optional dependency

This commit is contained in:
Hiroshi SHIBATA 2024-09-27 17:51:56 +09:00
parent eff16d9302
commit ff3f61556f
No known key found for this signature in database
GPG Key ID: F9CF13417264FAC2

View File

@ -52,6 +52,10 @@ module Gem::BUNDLED_GEMS
"syslog" => true,
}.freeze
OPTIONAL = {
"fiddle" => true,
}.freeze
WARNED = {} # unfrozen
conf = ::RbConfig::CONFIG
@ -69,9 +73,15 @@ module Gem::BUNDLED_GEMS
[::Kernel.singleton_class, ::Kernel].each do |kernel_class|
kernel_class.send(:alias_method, :no_warning_require, :require)
kernel_class.send(:define_method, :require) do |name|
result = kernel_class.send(:no_warning_require, name)
if result && message = ::Gem::BUNDLED_GEMS.warning?(name, specs: spec_names)
message = ::Gem::BUNDLED_GEMS.warning?(name, specs: spec_names)
begin
result = kernel_class.send(:no_warning_require, name)
rescue LoadError => e
result = e
end
if (result || !OPTIONAL[name]) && message
if ::Gem::BUNDLED_GEMS.uplevel > 0
Kernel.warn message, uplevel: ::Gem::BUNDLED_GEMS.uplevel
else
@ -79,8 +89,13 @@ module Gem::BUNDLED_GEMS
end
end
result
if result.is_a?(LoadError)
raise result
else
result
end
end
if kernel_class == ::Kernel
kernel_class.send(:private, :require)
else