如何获取rails / nginx来清理/ tmp / RackMultipart *文件?

时间:2010-12-01 15:13:07

标签: ruby-on-rails nginx passenger

当用户上传图片时,此类文件会在/tmp

中累积
RackMultipart20101130-1130-1l2q8dt-0
RackMultipart20101130-1130-1t11oa9-0
RackMultipart20101130-1130-59nrpq-0
RackMultipart20101130-1130-6jdqem-0
RackMultipart20101130-11807-1usq3d8-0  
RackMultipart20101130-11807-nns7dw-0

如何在上传完成后让rails / nginx / passenger清理这些文件?

我正在使用:

  • nginx 0.8.53
  • Phusion Passenger 2.2.15(mod_rails / mod_rack)
  • Ruby on Rails 2.3.8
  • Paperclip ruby​​ gem上传图片

2 个答案:

答案 0 :(得分:1)

首先想到的是一个带有crontab的Rake任务,可以不时清除/tmp目录。

  1. lib/tasks中创建一个新的Rake任务,删除RackMultipart*个文件。
  2. 每X小时执行一次Rake任务作为crontab。
  3. (可选)使用Whenever简化第2步(与Capistrano结合使用非常强大)
  4. 这样说最好让Paperclip清除文件,因为上面的方法可以删除Paperclip仍在使用的临时文件,但我不知道该怎么做。

答案 1 :(得分:1)

如果您不想编写Rake任务,我建议为debian / ubuntu安装tmpreaper包。它可以配置为根据需要频繁清除/tmp(例如,删除在过去一小时内未访问的文件)。

基础Papeclip问题#902已通过Paperclip 3.1.0的发布得到解决,之后我们停止看到如此多的RackMultipart *文件。