【发布时间】:2015-04-11 01:38:38
【问题描述】:
我正在尝试使用他们的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中的logger消息根本不输出!
我错过了什么?这很奇怪,因为 Student.send_emails 真正所做的只是为每个学生调用 RecurringScheduleNotifier.send_schedule_reminder(我的开发环境中现在只有 1 个)。直接对那个学生调用RecurringScheduleNotifier.send_schedule_reminder 效果很好。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 actionmailer ruby-on-rails-4.2