0

我尝试在一段时间(6 个月)后使用 gem 'whenever' 进行记录清理。

在我的每当调度程序中:

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方面相对较新。请帮助我。

编辑:我通过运行 clean 一行命令更改了游戏:

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,它在那里但仍然无法正常工作。任何想法?

4

2 回答 2

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

于 2013-03-31T06:15:03.927 回答
0

根据这里的答案:

# 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'
于 2017-12-05T04:50:06.147 回答