【发布时间】:2017-05-05 16:23:58
【问题描述】:
我已经在 Rails 中编写了我的第一个 rake 任务,我已经使用 Heroku 调度程序对其进行了设置,并且它正在运行,但是邮件没有被发送。我的邮件设置很好,因为我将它用于各种其他事情,我想这是我在 rake 任务中的代码的问题。任何帮助将非常感激。
lib/tasks/uncomplete_form.rake
desc "Remind users if they haven't completed quote form"
task uncomplete_form: :environment do
puts 'Reminding users of uncomplete quote form'
date = Date.parse('december 18 2016')
quickcontacts = Quickcontact.where(created_at: date.midnight..Time.now)
quickcontacts.each do |quickcontact|
next unless quickcontact.created_at > 1.hour.ago
if quickcontact.p_p = nil
QuickcontactMailer.uncomplete_form(@quickcontact).deliver
end
end
puts 'done.'
end
通过运行 rake uncomplete_form 我得到
提醒用户报价单不完整
完成。
然后跑步 heroku run rake uncomplete_form 我明白了
Reminding users of uncomplete quote form
Quickcontact Load (1.5ms) SELECT "quickcontacts".* FROM "quickcontacts" WHERE ("quickcontacts"."created_at" BETWEEN '2016-12-18 00:00:00.000000' AND '2016-12-20 12:09:23.683977')
done.
它似乎没有接收任何快速联系人 - 但是如果我在控制台中运行:
date = Date.parse('december 18 2016')
紧随其后
quickcontacts = Quickcontact.where(created_at: date.midnight..Time.now)
它确实找到了预期的联系人
【问题讨论】:
-
可能是时区问题。 Heroku 计划将在 UTC 上运行。尝试以这种方式调试。
-
我想过这个问题,但 UTC 时间比我早 2 小时,而且一些快速联系人是昨天(12 月 19 日)创建的,所以我认为应该不会有什么不同。
标签: ruby-on-rails ruby heroku rake rake-task