【问题标题】:Heroku/Rails: Task scheduler is working but does nothingHeroku/Rails:任务调度程序正在工作但什么都不做
【发布时间】:2017-06-07 07:11:34
【问题描述】:

我有一个在 heroku 上运行的应用程序,它每天运行一次名为 every_day 的任务。任务调度程序工作正常,但它对我的数据库没有任何作用。我也尝试手动运行它,结果相同。我认为问题出在我的代码上,如果有人能告诉我出了什么问题,我将不胜感激。此任务代码:

task :every_day => :environment do
  unactive_auction = Auction.where(ended: false).where('created_at < ?', 14.days.ago)
  unactive_auction.update_all(:ended => true)
end

当我手动运行它时,我得到了这个:

, [2017-06-07T07:08:26.348223 #4] DEBUG -- :   Auction Load (1.7ms)  SELECT  "auctions".* FROM "auctions" ORDER BY "auctions"."id" ASC LIMIT $1  [["LIMIT", 1000]]
D, [2017-06-07T07:08:26.677182 #4] DEBUG -- :   SQL (1.3ms)  UPDATE "auctions" SET "ended" = 't' WHERE "auctions"."ended" = $1 AND (created_at < '2017-05-24 07:08:26.674476')  [["ended", false]]

我不知道我做错了什么。看起来它正在工作,但是......但它什么也没做。

【问题讨论】:

  • 是什么让你说它什么都不做?你如何验证? ended 是布尔值吗?尝试在您的控制台中运行相同

标签: ruby-on-rails heroku taskscheduler


【解决方案1】:

您确定有满足您查询参数的对象吗? 在 Rails 控制台中运行:

 unactive_auction = Auction.where("ended is ? and created_at < ?", false, 14.days.ago)

并在运行任务之前查看它是否返回任何内容。

【讨论】:

  • 这行好像有问题。我删除了“结束部分”,现在它可以工作了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 2021-08-30
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
相关资源
最近更新 更多