我已经安装了whenever gem:
我想每隔5分钟在rails 3.1上的app ruby中清理目录public / uploads / tmp。
every 5.minutes do
#here go the code for clean the directory tmp
end
我该怎么做?
谢谢!
答案 0 :(得分:2)
您可以尝试使用标准库中包含的FileUtils#rm_rf
。例如:
FileUtils.rm_rf Dir.glob("#{Rails.root}/public/uploads/tmp/*")
编辑(随时随地使用宝石)
使用rake任务的方法可能是:
1)在f.ex中创建一个rake任务:lib/tasks/cleanup.rake
,其内容类似于以下内容:
require 'fileutils'
namespace :app do
desc "Cleanup temp uploads"
task :cleanup => :environment do
FileUtils.rm_rf Dir.glob("#{Rails.root}/public/uploads/tmp/*")
end
end
2)在config/schedule.rb
中(每当运行whenize命令后创建):
every 5.minutes do
# run the previous app:cleanup task
rake "app:cleanup"
end
3)每当只是一个容易定义crontab作业的包装器时,现在我们需要将定义的时间表导出到当前用户的crontab文件中。为此,我们应该从应用程序根目录进行输入:
bundle exec whenever -w
4)您可以通过键入crontab -l
来检查它是否有效,您应该执行以下操作:
# Begin Whenever generated tasks for: /tmp/whene/config/schedule.rb
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /bin/bash -l -c 'cd /tmp/whene && RAILS_ENV=production bundle exec rake app:cleanup --silent
作为旁注,如果您希望操作写入一些日志输出,请检查this page on the whenever github wiki。
希望它有所帮助。