我尝试使用gem'never'后的一段时间(6个月)进行记录清理。
在我的随时调度程序中:
every 1.month, at: '1am' do
rake 'lib/tasks/cleanup_user.rake'
end
在lib / tasks / cleanup_user.rake
中@user = User.all.where(:created_at > 'Time.6.month.ago').delete
看来是对的。但是,我得到错误'未初始化的常量用户'。我是相对较新的rails。请帮助我。
编辑:我通过运行干净的一行命令改变了游戏:set :output, "log/cron.log"
every 1.minutes, :environment => :development do
command 'User.where("confirmed = 0 AND created_at <= ?", 6.months.ago).delete'
end
我设置了特定的环境,并在命令中运行:
whenever --set environment=development --update-crontab userscleaning
检查crontab,它在那里但仍无法正常工作。有什么想法吗?
答案 0 :(得分:0)
尝试将environment
依赖项添加到您的任务中。
task :cleanup_users => :environment do
User.where(:created_at > 'Time.6.month.ago').delete_all
end
如果您希望触发回调,请使用destroy_all
task :cleanup_users => :environment do
User.where(:created_at > 'Time.6.month.ago').destroy_all
end
以下是相关的Railscasts。
答案 1 :(得分:0)
根据答案here:
# lib/tasks/delete_old_records.rake
namespace :delete do
desc 'Delete records older than 6 months'
task old_records: :environment do
User.where('created_at > ?', 6.month.ago).destroy_all
end
end
使用以下命令运行:
RAILS_ENV=production rake delete:old_records
随时:
every 1.minutes do
rake "delete:old_records"
end
或者在cron:
0 8 * * * /bin/bash -l -c 'cd /my/project/releases/current && RAILS_ENV=production rake delete:old_records 2>&1'