Ошибка неверного метода доставки при попытке использовать пользовательский 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
Другие вопросы по тегам