如何在Ruby on Rails中自动删除临时文件?

5
我的Rails应用程序需要处理并生成PDF XFA文件,然后发送给用户/浏览器。目前工作正常。但问题在于,在将文件发送给用户之前,它会在Rails临时目录中创建2个文件。
如果pdf_controller接收到10个请求,那么临时目录中的临时文件数将加倍,并且会占用更多的空间。
在搜索了一番后,我认为Sweeper可以解决这个问题,但对Sweeper的知识不是很了解。
因此,请问是否有人能建议应该使用哪种方法?
2个回答

5

当对象终结时,Tempfile会删除文件。

Tempfile的Rdoc文档

示例:

def get_pdf
  model = Model.find(params[:id])
  file = Tempfile.new
  model.to_pdf(file)
  send_file file.path, ...
end

如果您将代码粘贴到问题中,我可以提供更好的示例。


嗨,斯科特! 我认为Tempfile可能是解决方案。但我仍然不清楚如何使用它来完成我上面提到的任务。 一个例子会更好。 谢谢。 - millisami

1
你可以使用 cron 任务,每隔 n 分钟删除文件,或者从控制器本身发出删除命令。

1
计划任务可能不是好的解决方案。当用户查看创建的临时 PDF 文件并且一段时间内没有提交 PDF 表单,如果计划任务启动并删除了临时文件,稍后用户提交 PDF 表单时,系统会变得松散/无效。 - millisami

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接