我读过您可以通过Ruby命令行禁用did_you_mean
gem(默认情况下已启用),如下所示:
ruby --disable-did_you_mean script.rb
在script.rb
而不是命令行参数中是否有相同的方法?
答案 0 :(得分:2)
您可以通过在script.rb
中重新实现来撤消module definition of DidYouMean
,其中您将错误处理程序委派给原始的Ruby实现。
# Beginning of script.rb
module DidYouMean
module Correctable
prepend_features NameError
def to_s
super
end
end
end
ary = [1,2]
ary.att(0)
#=> undefined method `att' for [1, 2]:Array
# (repl):15:in `<main>'
答案 1 :(得分:2)
宝石通过猴子修补NameError
,并将DidYouMean::Correctable
添加到其祖先。
NameError.ancestors
#=> [DidYouMean::Correctable, NameError, StandardError, Exception, Object, Kernel, BasicObject]
您可以通过重新定义Wand Maker建议的DidYouMean::Correctable#to_s
来解决此问题,或者您可以完全从模块中删除该方法:
module DidYouMean::Correctable
remove_method :to_s
end
具有相同的结果。