我正在尝试在标准库中对Net类中的一行进行monkeypatch。我在项目的lib文件夹中创建了一个名为patches.rb的文件,并添加了这个
module Net
class HTTP < Protocol
module HTTPHeader
def initialize_http_header(initheader)
@header = {}
return unless initheader
initheader.each do |key, value|
@header[key.downcase] = [value.strip] rescue ""
end
end
end
end
end
但它不起作用。我这样做了吗? (这与继承层次结构完全相同。)
编辑:部分问题是我必须将文件放在initalizers文件夹中。但仍然看到同样的错误。
答案 0 :(得分:10)
由于lib/
目录中的内容只是按需加载,因此在config/initializers/
中将这些补丁放到堆栈初始化后自动加载后,可能会更成功。
您还可以将扩展名的定义折叠为以下内容:
module Net::HTTP::HTTPHeader
# ... (redefined methods) ...
end