MailGun + Devise + Rails = "неинициализированная константа MyMailer :: MailGun"? - PullRequest
0 голосов
/ 04 ноября 2019

Я использую Devise для аутентификации и mailgun-ruby gem для отправки электронной почты, и мне трудно понять, как заставить почтовый класс по умолчанию Devise работать с Mailgun. Согласно документу mailgun, я настроил свой файл production.rb на использование настроек mailgun:

config.action_mailer.delivery_method = :mailgun
config.action_mailer.mailgun_settings = {
 api_key: ENV['MAILGUN_API_KEY'],
 domain: 'mail.mywebsite.com'
}

А затем в своем классе почтовой программы мне потребуется гем и создаст экземпляр Mailgun::Clientobject.

class MyMailer < Devise::Mailer
  require 'mailgun-ruby'
  helper :application
  include Devise::Controllers::UrlHelpers
  default template_path: 'users/mailer'

 def confirmation_instructions(record, token, opts={})
  mg_client = MailGun::Client.new
  message_params = {
   from: "me@mywebsite.com",
   to: record.email,
   subject: "Please confirm your account"
  }

  mg_client.send_message message_params

  super
 end
end

Я закомментировал строку config.mailer = 'MyMailer' в инициализаторе devise.rb , но по какой-то причине Rails ищет MailGun как подкласс MyMailer. Почему это? Ошибка в названии - uninitialized constant MyMailer::MailGun.

1 Ответ

1 голос
/ 04 ноября 2019

Похоже, в вашем коде есть орфография

mg_client = MailGun::Client.new

должно быть

mg_client = Mailgun::Client.new
...