Create a file for the task:
# lib/tasks/delete_old_records.rake namespace :delete do desc 'Delete records older than 60 days' task :old_records => :environment do Model.where('created_at < ?', 60.days.ago).each do |model| model.destroy end
Run with:
RAILS_ENV=production rake delete:old_records
Schedule it to run cron (every day at 8:00 in this example):
0 8 * * * /bin/bash -l -c 'cd /my/project/releases/current && RAILS_ENV=production rake delete:old_records 2>&1'
You can also use the [whenever][1] stone to create and manage your crontab during deployment:
every 1.day, :at => '8:00 am' do rake "delete:old_records" end
source share