From dc74f9cb3658c38e90f4fbe91a36a0692732ea25 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sat, 28 Jun 2025 22:27:30 +0900 Subject: [PATCH] Make `uplevel` suitable as the option to `Kernel#warn` Make Gem::BUNDLED_GEMS.uplevel returns `nil` if `require` frame is not found, for the simplicity. --- lib/bundled_gems.rb | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/lib/bundled_gems.rb b/lib/bundled_gems.rb index 01a05de095..e49d6fbdcf 100644 --- a/lib/bundled_gems.rb +++ b/lib/bundled_gems.rb @@ -49,12 +49,7 @@ module Gem::BUNDLED_GEMS # :nodoc: kernel_class.send(:alias_method, :no_warning_require, :require) kernel_class.send(:define_method, :require) do |name| if message = ::Gem::BUNDLED_GEMS.warning?(name, specs: spec_names) - uplevel = ::Gem::BUNDLED_GEMS.uplevel - if uplevel > 0 - Kernel.warn message, uplevel: uplevel - else - Kernel.warn message - end + Kernel.warn message, uplevel: ::Gem::BUNDLED_GEMS.uplevel end kernel_class.send(:no_warning_require, name) end @@ -86,11 +81,10 @@ module Gem::BUNDLED_GEMS # :nodoc: uplevel += 1 # Don't show script name when bundle exec and call ruby script directly. if cl.path.end_with?("bundle") - frame_count = 0 - break + return end end - require_found ? 1 : frame_count - 1 + require_found ? 1 : (frame_count - 1).nonzero? end def self.warning?(name, specs: nil)