在rake任务中调用类方法,没有发生任何事情



所以我有一个类方法,它非常适合我的ApplicationMailer。它查找未完成的订单,将其转换为CSV,将其附加在电子邮件中,并通过电子邮件将其发送到预定义的电子邮件地址。

这非常有效。

然而,当我在rake任务中调用此方法时,它绝对不会起任何作用。这是我写的第一个rake任务,我正试图将其与heroku调度器一起使用,以发送每晚要完成的订单。

我的rake任务的代码如下:

desc "send daily orders to shipping"
task :send_orders_to_shipping => :environment do
ApplicationMailer.email_days_orders
end

这个rake任务在rake-vT中显示为rake send_orders_to_shipping;bundle exec rake send_orders_to_shipping";,命令行似乎停顿了5-10秒,就像它在做什么一样,但没有返回任何错误或任何事情,也没有发生任何事情。数据库中没有订单被标记为已完成,因为我只是从命令行运行类方法,并且没有发送电子邮件。

如果有任何帮助,我们将不胜感激。我是新手,不知道我在阅读中是否遗漏了什么?

herokus文档指示我放置:environment块,以便使用调度器插件。这会不会把事情搞砸了?

edit:这是ApplicationMailer.email_days_order的代码,它在命令行中工作。

def email_days_orders
ordlength = Order.where(fulfilled: false).length
indordlength = Individualorder.where(fulfilled: false).length
if ordlength > 0
attachments["school_orders_#{Date.today}.csv"] = Order.todays_orders_to_csv
end
if indordlength > 0
attachments["individual_orders_#{Date.today}.csv"] = 
Individualorder.todays_indorders_to_csv
end
if ordlength > 0 || indordlength > 0
mail(to: [ENV['SHIPPING_EMAIL_1'], ENV['SHIPPING_EMAIL_2'], 
ENV['SHIPPING_EMAIL_3']] ).deliver
end
end

您忘记了实际发送电子邮件。尝试ApplicationMailer.email_days_orders.deliver_later(或.deliver_now(

相关内容

最新更新