簡體   English   中英

如何在生產中運行發條腳本

[英]How to run clockwork script in production

我正在使用發條寶石。 我想每天午夜自動從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

耙任務:

lib /任務/comment.rake

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

感謝您的努力。 畢竟,我是通過rake任務來完成此任務的,並且沒有clockwork寶石。 我創建了一個rake任務,將其部署到heroku,然后通過heroku Scheduler插件運行任務。 現在它正在作為后台作業運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM