Ошибка неверного метода доставки при попытке использовать пользовательский DeliveryMethod в рельсах
Я создал собственный метод доставки электронной почты для своего приложения на Rails 4:
module CustomDeliverer
class DeliveryMethod
def initialize(options = {})
end
def deliver!(mail)
# method body hidden/not relevant for this question
end
end
end
Я также следовал примеру в геме открывателя писем, чтобы зарегистрировать пользовательский метод доставки:
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 был удален из дерева модулей, но все еще активен!
Где я должен зарегистрироваться или потребовать CustomDeliverer::Railtie в моем приложении rails, чтобы я мог установить метод доставки с помощью символа?
1 ответ
Догадаться:
Вместо того, чтобы использовать Railtie, который предназначен только для драгоценных камней, добавлен инициализатор config/initializers/add_custom_delivery_method.rb:
ActiveSupport.on_load :action_mailer do
ActionMailer::Base.add_delivery_method :custom_deliverer, CustomDeliverer::DeliveryMethod
end