我正在使用发条宝石。我希望每天午夜自动删除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
as in this SO topic但只输出:
Running via Spring preloader in process 13973
并退出提示并且注释仍然存在(假设at:
哈希中的值已经过去了。)
这是我的第一个个人项目。
我的问题是如何让这个脚本在生产中不间断运行,以便每天午夜自动删除评论?
OR
更一般:
如何在生产中运行脚本不间断。
我看了this SO topic,但答案并不是很彻底,上面的第一个链接也没有,初学者要理解。
答案 0 :(得分:1)
您可以创建rake任务并调用表单clock.rb
every(1.day, 'name', at: '09:00') do
#Load task
Rake::Task['comment:destroy'].invoke
end
rake任务:
namespace :comment do
desc 'Destroy all comment'
task destroy: :environment do
Comment.destroy_all
end
end
答案 1 :(得分:0)
感谢您的努力。毕竟,我通过rake任务和没有clockwork
gem来管理它。
我创建了一个rake任务,将其部署到heroku,并通过heroku scheduler插件运行任务。现在它作为后台工作运行。