每当gem时清理目录

时间:2012-03-08 12:46:55

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我已经安装了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

我该怎么做?

谢谢!

1 个答案:

答案 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

希望它有所帮助。