如何在生产中 运行 发条脚本
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 插件部署了 运行 任务。现在 运行 作为后台作业。
我正在使用发条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 插件部署了 运行 任务。现在 运行 作为后台作业。