如何覆盖 Rails Framework 中的一种方法?

How to override one method from Rails Framework?

如何覆盖 Rails 中的方法?

更具体地说,我在 6.0.0.rc1 上,我想要这个提交,但它只在 6.1 上可用:https://github.com/rails/rails/pull/36072/files

我想从

覆盖私有方法def read_image
module ActiveStorage
  class Analyzer::ImageAnalyzer < Analyzer
    private
      def read_image

你会怎么做,在哪个 Rails 文件夹中?

因为这是 Ruby,您只需将确切的代码放在 config/initializers/active_storage_read_image.rb:

中即可
module ActiveStorage
  class Analyzer::ImageAnalyzer < Analyzer
  private
    def read_image
      # My implementation here
    end
  end
end

您可能想像这样在其中添加一个提醒测试:

if (Rails.version.starts_with?('6.1'))
  Rails.logger.warning("This patch may not be required in Rails 6.1")
end