我如何修补ruby的URI.parse方法
发布时间:2020-12-17 04:27:54 所属栏目:百科 来源:网络整理
导读:一些流行的博客网站通常在其URL中使用方括号,但 ruby的内置URI.parse()方法会对它们产生阻碍,引发令人讨厌的异常,如下所示: http://redmine.ruby-lang.org/issues/show/1466 我正在尝试编写一个简单的猴子补丁,它使用方括号优雅地处理URL.以下是我到目前为
一些流行的博客网站通常在其URL中使用方括号,但
ruby的内置URI.parse()方法会对它们产生阻碍,引发令人讨厌的异常,如下所示:
http://redmine.ruby-lang.org/issues/show/1466 我正在尝试编写一个简单的猴子补丁,它使用方括号优雅地处理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:模块’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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |