From ff3f61556fb62d12d57d017f4c54f1a8fd5208be Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 27 Sep 2024 17:51:56 +0900 Subject: [PATCH] Only warn fiddle as optional dependency --- lib/bundled_gems.rb | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/bundled_gems.rb b/lib/bundled_gems.rb index f819134c96..087f94a9ac 100644 --- a/lib/bundled_gems.rb +++ b/lib/bundled_gems.rb @@ -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