gpt4 book ai didi

ruby - 我如何猴子修补 ruby​​ 的 URI.parse 方法

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:04 24 4
gpt4 key购买 nike

一些流行的博客网站通常在他们的 URL 中使用方括号,但 ruby​​ 的内置 URI.parse() 方法会阻塞它们,引发一个讨厌的异常,如下所示: http://redmine.ruby-lang.org/issues/show/1466

我正在尝试编写一个简单的 monkey-patch,它可以优雅地处理带有方括号的 URL。以下是我目前所拥有的:

require 'uri'

module URI

def self.parse_with_safety(uri)
safe_uri = uri.replace('[', '%5B')
safe_uri = safe_uri.replace(']', '%5D')
URI.parse_without_safety(safe_uri)
end

alias_method_chain :parse, :safety

end

但是当运行时,这会产生一个错误:

/Library/Ruby/Gems/1.8/gems/activesupport-2.3.8/lib/active_support/core_ext/module/aliasing.rb:33:in alias_method: NameError: undefined method 'parse' for module 'URI'

我怎样才能成功地对 URI.parse 进行猴子修补?

最佳答案

alias_method_chain 在模块级别执行,因此它只影响实例方法。

你所要做的就是在模块的类级别上执行它:

require 'uri'

module URI
class << self

def parse_with_safety(uri)
parse_without_safety uri.gsub('[', '%5B').gsub(']', '%5D')
end

alias parse_without_safety parse
alias parse parse_with_safety
end
end

关于ruby - 我如何猴子修补 ruby​​ 的 URI.parse 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3891158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com