覆盖 Rails 库中的实例方法
Overriding Instance Method in Rails Library
这似乎是一个猴子补丁。我该如何改进它?
正在尝试覆盖 ActionMailer::MessageDelivery class 中的 deliver_now
实例方法。下面的代码有效。
但是,有没有一种方法可以通过 class 继承或其他方式更优雅地实现这一点?结束代码用于自定义 ActionMailer 邮件程序。
module MyModule
class Ses
ActionMailer::MessageDelivery.class_eval do
def deliver_now!
puts self.to
puts self.subject
end
end
...
end
end
注意:我看过这些类似的问题one & two,但它们没有解决这个问题。
您可能会查看 Ruby 的 refinements
细化示例:
module MyMessageRefinement
refine(ActionMailer::MessageDelivery) do
def deliver_now!
puts self.to
puts self.subject
end
end
end
然后在你的 class:
module MyModule
class Ses
using MyMessageRefinement
end
end
这似乎是一个猴子补丁。我该如何改进它?
正在尝试覆盖 ActionMailer::MessageDelivery class 中的 deliver_now
实例方法。下面的代码有效。
但是,有没有一种方法可以通过 class 继承或其他方式更优雅地实现这一点?结束代码用于自定义 ActionMailer 邮件程序。
module MyModule
class Ses
ActionMailer::MessageDelivery.class_eval do
def deliver_now!
puts self.to
puts self.subject
end
end
...
end
end
注意:我看过这些类似的问题one & two,但它们没有解决这个问题。
您可能会查看 Ruby 的 refinements
细化示例:
module MyMessageRefinement
refine(ActionMailer::MessageDelivery) do
def deliver_now!
puts self.to
puts self.subject
end
end
end
然后在你的 class:
module MyModule
class Ses
using MyMessageRefinement
end
end