我已为我的Rails 4应用构建了自定义电子邮件投放方式:
module CustomDeliverer
class DeliveryMethod
def initialize(options = {})
end
def deliver!(mail)
# method body hidden/not relevant for this question
end
end
end
我也跟着the example in the letter opener gem注册了自定义投放方式:
module CustomDeliverer
class Railtie < Rails::Railtie
initializer "custom_deliverer.add_delivery_method" do
ActiveSupport.on_load :action_mailer do
ActionMailer::Base.add_delivery_method :custom_deliverer, CustomDeliverer::DeliveryMethod
end
end
end
end
我已将配置文件设置为使用此送货员:
config.action_mailer.delivery_method = :custom_deliverer
当我尝试在我的应用中发送邮件时,我收到错误:
无效的投放方式:custom_deliverer
但是,当我将配置文件设置为直接使用送货员时:
config.action_mailer.delivery_method = CustomDeliverer::DeliveryMethod
它可以正常工作,但只要代码在应用程序中发生变化(在本地开发时),我就会收到错误:
CustomDeliverer :: DeliveryMethod已从模块树中删除 但仍然活跃!
我应该在我的rails应用程序中注册或要求CustomDeliverer :: Railtie,以便我可以通过符号设置交付方式?
答案 0 :(得分:2)
想出来:
不使用仅用于宝石的Railtie,而是添加了初始化程序,config / initializers / add_custom_delivery_method.rb:
ActiveSupport.on_load :action_mailer do
ActionMailer::Base.add_delivery_method :custom_deliverer, CustomDeliverer::DeliveryMethod
end