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

问题描述 投票:0回答:2

我正在使用发条宝石。 我想每天午夜自动从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主题,但是答案不是很彻底,对于初学者来说,上面的第一个链接都不是。

ruby-on-rails heroku production-environment clockwork
2个回答
1
投票

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

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

耙任务:

lib /任务/comment.rake

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

0
投票

感谢您的努力。 毕竟,我是通过rake任务来完成此任务的,并且没有clockwork宝石。 我创建了一个rake任务,将其部署到heroku,然后通过heroku Scheduler插件运行任务。 现在它正在作为后台作业运行。

© www.soinside.com 2019 - 2024. All rights reserved.