如何在生产中 运行 发条脚本

How to run clockwork script in production

我正在使用发条gem。我想每天午夜自动删除来自 comments table 的所有评论。

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

as in this SO topic 但只有输出是:

Running via Spring preloader in process 13973

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

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

看了this SO topic但是回答的不是很透彻,上面第一个link都不是,初学者可以理解。

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

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

rake 任务:

lib/tasks/comment.耙

namespace :comment do
  desc 'Destroy all comment'
  task destroy: :environment do
    Comment.destroy_all
  end
end

感谢您的努力。毕竟,我是通过 rake 任务管理的,没有 clockwork gem。 我创建了一个 rake 任务,将其部署到 heroku,并通过 heroku scheduler 插件部署了 运行 任务。现在 运行 作为后台作业。