Я пытаюсь зарегистрировать некоторые перехватчики в моем приложении Rails. Например, в моем /config/initializers/mailer.rb
Рельсы Перехватчик ActionMailer на Heroku
if Rails.env.staging?
class PrefixStagingMailSubject
def self.delivering_email(mail)
mail.subject = "TEST #{mail.subject}"
end
end
ActionMailer::Base.register_interceptor(PrefixStagingMailSubject)
end
Это прекрасно работает на моей машине разработчиков. Но это не на сервере Heroku.
Иногда я выяснил, что он работает в почтовых сообщениях, отправленных Devise (например, сбрасывает пароль). Это означает, что перехватчик, хотя и был зарегистрирован.
Но в моих почтовых программах это все еще не работает. Например мой ReportsMailer
class ReportsMailer < ActionMailer::Base
def report_email(email, title, public_url)
subject = "The #{title} report you've requested was generated"
body = <<-EOS
The #{title} report you've requested was generated
You can download it by clicking the link below:
------------
#{public_url}
EOS
mail(to: email, subject: subject, body: body)
end
end
Что может быть не так?
Не могли бы вы помочь мне? Спасибо.
Вы можете проверить переменную окружения RAILS_ENV для своего приложения? Это должно быть «постановка», а не «производство». – eugen
@eugen, это была моя мысль и в начале. Но сброс пароля был отправлен с тестом в тему. Это означает, что «RAILS_ENV = постановка» и даже перехватчик зарегистрированы правильно. – Aleksey
Это действительно странно, если он работает для одной почтовой программы, я не понимаю, почему это не работает для всех. У меня есть аналогичный перехватчик, который работает, единственное отличие состоит в том, что я регистрирую его с помощью 'Mail.register_interceptor' вместо' ActionMailer :: Base.register_interceptor', и я регистрирую его перед настройкой остальной части «ActionMailer :: Base». smtp'. Я сомневаюсь, что это изменило бы ситуацию. – eugen