summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2025-09-08 21:01:29 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2025-09-08 21:06:17 +0900
commitac24f70fb0c0cc80d30ec6e96b3369079775d0dc (patch)
treebb1b24cde10ded5b38a76429441f14cc88664df0
parent7c5ddb793b71d05d3fba954bbe397ab03c6f76dc (diff)
Align the conditions for did_you_mean
Probably due to the testing order, sometimes it looks like that `Gem::UnknownCommandError` happens to be used without registered in `DidYouMean`.
-rw-r--r--lib/rubygems/exceptions.rb4
-rw-r--r--test/rubygems/test_gem_command_manager.rb2
2 files changed, 2 insertions, 4 deletions
diff --git a/lib/rubygems/exceptions.rb b/lib/rubygems/exceptions.rb
index 362b09dcbb..0f65c76daf 100644
--- a/lib/rubygems/exceptions.rb
+++ b/lib/rubygems/exceptions.rb
@@ -21,13 +21,11 @@ class Gem::UnknownCommandError < Gem::Exception
end
def self.attach_correctable
- return if defined?(@attached)
+ return if method_defined?(:corrections)
if defined?(DidYouMean) && DidYouMean.respond_to?(:correct_error)
DidYouMean.correct_error(Gem::UnknownCommandError, Gem::UnknownCommandSpellChecker)
end
-
- @attached = true
end
end
diff --git a/test/rubygems/test_gem_command_manager.rb b/test/rubygems/test_gem_command_manager.rb
index eeda4d94cf..50a2270e3d 100644
--- a/test/rubygems/test_gem_command_manager.rb
+++ b/test/rubygems/test_gem_command_manager.rb
@@ -79,7 +79,7 @@ class TestGemCommandManager < Gem::TestCase
message = "Unknown command pish".dup
- if defined?(DidYouMean)
+ if e.respond_to?(:corrections)
message << "\nDid you mean? \"push\""
end