Мне потребовалось некоторое время, чтобы заставить это работать в (не) Rails 4. Я подозреваю, что это просто потому, что у меня есть «: require => false» во всем моем Gemfile, но мне нужно было добавить следующее, чтобы сделать это работа:
require 'action_view/record_identifier'
require 'action_view/helpers'
require 'action_mailer'
Без приведенного выше кода я продолжал получать ошибку NoMethodError с undefined method 'assign_controller'
.
После этого я настроил ActionMailer следующим образом:
ActionMailer::Base.smtp_settings = {
address: 'localhost', port: '25', authentication: :plain
}
ActionMailer::Base.default from: 'noreply@example.com'
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.logger = Logger.new(STDOUT)
ActionMailer::Base.logger.level = Logger::DEBUG
ActionMailer::Base.view_paths = [
File.join(File.expand_path("../../", __FILE__), 'views', 'mailers')
# Note that this is an Array
]
Шаблоны входят в lib/<GEM_NAME>/views/mailers/<MAILER_CLASS_NAME>/<MAILER_ACTION_NAME>.erb
(MAILER_ACTION_NAME - это общедоступный метод экземпляра класса вашей почтовой программы, который вы вызываете для отправки электронного письма).
Наконец, не забудьте вставить это в ваш spec_helper
:
ActionMailer::Base.delivery_method = :test