如何重写 Rails Framework 中的一种方法?

Nic*_*vre 3 ruby spring overriding monkeypatching ruby-on-rails

如何重写 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
Run Code Online (Sandbox Code Playgroud)

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

tad*_*man 5

由于这是 Ruby,因此您只需将确切的代码放入类似以下内容即可config/initializers/active_storage_read_image.rb

module ActiveStorage
  class Analyzer::ImageAnalyzer < Analyzer
  private
    def read_image
      # My implementation here
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

您可能想在其中添加提醒测试,如下所示:

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