我試圖在我的rails(3.0.10)應用程序中攔截消息來修改主體。雖然我能找到一些有關如何做到這一點的信息,但似乎有些事情已經改變,現在使用舊的方法不再有效。如何在軌道3上攔截ActionMailer的消息?
我使用看起來像這樣的代碼:
class Hook
def self.delivering_email(message)
message.subject = 'Hook changed the subject'
end
end
ActionMailer::Base.register_interceptor(Hook)
發送電子郵件後,受試者沒有得到改變!
我還發現a tweet這表明攔截器不使用的郵件上deliver
方法時調用,但premailer-rails3寶石使用我用同樣的方法,並可以正常訪問(插件特別提到它的工作原理與deliver
法)!
我在這裏沒有想法,那麼是什麼原因導致我的問題?
哪裏是你的'Hook'類中定義的,和你在哪裏調用從'register_interceptor'方法? –
它位於'lib'目錄下的文件中。 'register_interceptor'在類定義之後被調用。我使用初始化程序加載所有庫。我也確定它是通過創建一個未定義的Class來加載的,並且足夠肯定的rails告訴了我它,所以我確定它正在加載。 – Maher4Ever
您是否曾嘗試在您的'deliver_email'方法中放入記錄器語句以確保它甚至被調用? –