我正在使用发条宝石。 我想每天午夜自动从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主题,但是答案不是很彻底,对于初学者来说,上面的第一个链接都不是。
您可以创建rake任务并调用表格clock.rb
every(1.day, 'name', at: '09:00') do
#Load task
Rake::Task['comment:destroy'].invoke
end
耙任务:
namespace :comment do
desc 'Destroy all comment'
task destroy: :environment do
Comment.destroy_all
end
end
感谢您的努力。 毕竟,我是通过rake任务来完成此任务的,并且没有clockwork
宝石。 我创建了一个rake任务,将其部署到heroku,然后通过heroku Scheduler插件运行任务。 现在它正在作为后台作业运行。