【问题标题】:How to set rake task for delete worker using whenever gem如何使用每当 gem 设置删除工作人员的 rake 任务
【发布时间】: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


    【解决方案1】:

    这是一个工人,而不是一个 rake 任务,所以你可以用它来做

    every 24.hours, at: '0:00am' do
     runner 'AdminPanelLogRemoverWorker.perform_async'
    end
    

    【讨论】:

    • 因为你没有传递参数,你可以直接调用.perform_async而不用括号。
    猜你喜欢
    • 2021-09-22
    • 2013-03-11
    • 2013-12-29
    • 2018-02-20
    • 2011-10-27
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 2012-07-15
    相关资源
    最近更新 更多