我正在尝试使用他们的ApplicationMailer
机制从 Ruby on Rails v4.2 发送电子邮件。不幸的是,至少在开发环境控制台中,ApplicationMailer
我们创建的子类没有调用我们试图调用的方法:
class RecurringScheduleNotifier < ApplicationMailer
default from: 'notifications@example.com'
def send_schedule_reminder(student)
logger.debug('This never gets called :(')
send_schedule_reminder_email(student, student.email).deliver
end
def send_schedule_reminder_email(user, email)
mail(to: email, subject: 'Test subject')
end
end
class Student < ActiveRecord::Base
def self.send_emails
Student.all.each do |student|
logger.debug('This does get called')
RecurringScheduleNotifier.send_schedule_reminder(student)
logger.debug('This also get called')
end
end
end
如果我直接在控制台中运行邮件程序,它会很好地发送电子邮件:
RecurringScheduleNotifier.send_schedule_reminder(Student.first)
所有 3 条记录器消息均按预期输出并发送电子邮件。但是,如果我从控制台调用Student
类方法,这不起作用:
Student.send_emails
我没有收到错误消息,但只Student
输出了类中的 2 条记录器消息。中的记录器消息RecurringScheduleNotifier
根本不输出!
我错过了什么?这很奇怪,因为Student.send_emails
真正要做的就是调用RecurringScheduleNotifier.send_schedule_reminder
每个学生(现在我的开发环境中只有 1 个)。直接打电话RecurringScheduleNotifier.send_schedule_reminder
给那个学生效果很好。