【发布时间】:2019-09-19 12:47:53
【问题描述】:
我有工作人员删除所有超过 1 年的管理日志。我希望它使用gem whenever 作为 rake 任务每天运行一次,但是我没有遵循 rake 任务的整个逻辑。我试图关注这篇文章https://medium.com/@sampatbadhe/rake-task-invoke-or-execute-419cd689c3bd,但最大的问题是我应该将我的工作人员移动到 rake 文件还是我可以直接引用该工作人员所在的文件?
下面是我的工人:
class AdminPanelLogRemoverWorker
include Sidekiq::Worker
def perform
expired_logs = AdminPanelLog.where('created_at < ?', 1.year.ago).select(:id)
expired_logs.find_in_batches do |logs_batch|
AdminPanelLog.where(id: logs_batch.map(&:id)).delete_all
end
end
end
据我了解,whenever gem 中的schedule.rb 应该如下所示:
every 24.hours do
rake 'myproject:AdminPanelLogRemoverWorker'
end
【问题讨论】:
标签: ruby-on-rails ruby rake