0

我正在使用发条宝石。comments我想每天午夜自动删除表中的所有评论。

app/clock.rb脚本在开发环境中按预期工作:

require './config/boot'
require './config/environment'
require 'clockwork'

module Clockwork
  every(1.day, 'delete.comment', at: '00:00') {
    Comment.destroy_all
  }
end

当它在我的本地终端上运行时$ clockwork app/clock.rb

所以我将应用程序部署到 Heroku。稍后在终端中,我运行:

RAILS_ENV=production rails r app/clock.rb

就像在这个 SO 主题中一样,但只有输出是:

Running via Spring preloader in process 13973

它退出提示并且评论仍然存在(假设at:散列中的值已经通过)。

这是我的第一个个人项目。我的问题是如何让这个脚本在生产中不间断地运行以在每天午夜自动删除评论?

更笼统地说:
如何在生产中不间断地运行脚本。

我读了这个 SO 主题,但答案不是很透彻,上面的第一个链接也不是,对于初学者来说。

4

2 回答 2

1

您可以创建 rake 任务并调用表单 clock.rb

every(1.day, 'name', at: '09:00')  do
    #Load task
    Rake::Task['comment:destroy'].invoke
end

耙任务:

lib/tasks/comment.rake

namespace :comment do
  desc 'Destroy all comment'
  task destroy: :environment do
    Comment.destroy_all
  end
end
于 2017-04-22T15:47:40.020 回答
0

谢谢你的努力。毕竟,我通过 rake 任务和没有clockworkgem 来管理这个。我创建了一个 rake 任务,将其部署到 heroku,然后通过heroku 调度程序插件运行任务。现在它作为后台作业运行。

于 2017-04-22T20:12:32.557 回答