Reputation: 2900
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
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