如何正确修补 Ruby



我正在尝试在标准库中的 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

相关内容

  • 没有找到相关文章