mr_muscle
mr_muscle

Reputation: 2900

How to set rake task for delete worker using whenever gem

I've got worker which deletes all admin logs older than 1 year. I want it run once a day using gem whenever as a rake task however I'm not follow the whole logic of rake tasks. I was trying to follow this article https://medium.com/@sampatbadhe/rake-task-invoke-or-execute-419cd689c3bd how ever the big question is should I move my worker to rake file or I can I refer directly to the file where this worker is?

my worker below:

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

As far I understand my schedule.rb in whenever gem should be like below:

every 24.hours do
  rake 'myproject:AdminPanelLogRemoverWorker'
end

Upvotes: 2

Views: 174

Answers (1)

cercxtrova
cercxtrova

Reputation: 1673

It's a worker, not a rake task, so you can do it with

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

Upvotes: 3

Related Questions