ruby-on-rails - 如何为删除工作人员设置 rake 任务,无论何时使用 gem

标签 ruby-on-rails ruby rake

我有一个工作人员可以删除所有超过 1 年的管理日志。我希望它每天使用gem作为 rake 任务运行一次,但是我没有遵循 rake 任务的整个逻辑。我试图关注这篇文章https://medium.com/@sampatbadhe/rake-task-invoke-or-execute-419cd689c3bd最大的问题是我应该将我的工作人员移动到 rake 文件还是我可以直接引用该工作人员所在的文件?

我的 worker 如下:

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

最佳答案

这是一个工作程序,而不是一个 rake 任务,因此您可以使用

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

关于ruby-on-rails - 如何为删除工作人员设置 rake 任务,无论何时使用 gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58011377/

相关文章:

ruby-on-rails - Ruby on Rails 在 rake 任务中指定环境

ruby-on-rails - 向 Rails Composer、Devise、CanCan、Twitter Bootstrap 添加角色

ruby-on-rails - 如何让 Rails 从本地源目录中获取 gem?

ruby - 如何使用 if 方法添加到数组

Ruby:EventMachine 未加载

ruby - 获取通用 Rack 应用程序中中间件的有序列表?

ruby-on-rails - Ruby on Rails - 将字符串转换为 DateTime 操作

html - 如何在 Rails 4 中修改 rails-bootstrap-forms tabindex

ruby-on-rails - 在 Rails 中获取渲染图像到浏览器

ruby - Resque with Redis To Go 无法按预期工作