1

这似乎是一个猴子补丁。我该如何改进它?

试图deliver_now从 ActionMailer::MessageDelivery 类中重写实例方法。下面的代码有效。

但是,有没有一种方法可以通过类继承或其他方式更优雅地实现这一点?结束代码用于自定义 ActionMailer 邮件程序。

module MyModule
  class Ses 

    ActionMailer::MessageDelivery.class_eval do
      def deliver_now!
        puts self.to
        puts self.subject
      end
    end
    ...
  end
end

注意:我已经看到了这些类似的问题,但它们没有解决这个问题。

4

1 回答 1

3

你可以看看 Ruby 的改进

一个示例改进:

module MyMessageRefinement
  refine(ActionMailer::MessageDelivery) do
    def deliver_now!
      puts self.to
      puts self.subject
    end
  end    
end

然后在你的课上:

module MyModule
  class Ses 
    using MyMessageRefinement
  end
end
于 2015-10-12T17:27:34.643 回答