我正在尝试在标准库中的 Net 类中修补一行。我在项目的 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
但它不起作用。我这样做对吗?(这与继承层次结构完全相似。
编辑:部分问题是我不得不将文件放在初始化器文件夹中。但仍然看到相同的错误。
由于 lib/
目录中的内容仅按需加载,因此您可以将这样的补丁放入config/initializers/
中,在堆栈初始化后自动加载它们。
您还可以将扩展的定义折叠为如下所示的内容:
module Net::HTTP::HTTPHeader
# ... (redefined methods) ...
end