【问题标题】:Rails, Paperclip, DelayedJob and cleaning temporary filesRails、Paperclip、DelayedJob 和清理临时文件
【发布时间】:2018-12-19 23:25:50
【问题描述】:
在 Ruby on Rails 应用程序中,我使用 Paperclip 处理附加文件。下载(从 URL)和附件在后台作业(使用 DelayedJob)中完成。
每个作业可能会处理许多要下载的文件,并导致在 /tmp 目录中留下几十个临时文件。
有时,一些临时文件会留在文件系统中,直到重新启动 DelayedJob 工作器。
我想知道是否有办法手动清理临时文件。
感谢您的帮助
【问题讨论】:
标签:
ruby
paperclip
delayed-job
【解决方案1】:
如果您想避免使用 cron 的语法,您可以使用定期安排的作业、使用常规 cron 的安排或使用 Clockwork gem 或 resque-scheduler 之类的东西自动执行此操作。让它在给定目录中查找临时文件;如果它是 /tmp 下的特定子目录,这是最简单的,并删除所有超过 10 分钟的文件,或者任何对您的应用程序有意义的文件。每天运行一次或多次运行该工作,您不必担心。
【解决方案2】:
您可以使用Tempfile。
用于管理临时文件的实用程序类。
file = Tempfile.new('foo')
begin
# process here
ensure
file.close
file.unlink # deletes the temp file
end