如何在ruby-rails中自动删除临时文件?

Aut*_*act 5 ruby ruby-on-rails temporary-files

My Rails应用程序必须处理并生成PDF XFA文件并发送给用户/浏览器.它的工作正常.但问题是在将文件发送给用户之前,它会在rails tmp目录中创建2个文件.

如果有10个请求进入pdf_controller,那么tmp目录中的临时文件数将翻倍,并且会占用空间.

在四处搜索之后,我认为Sweeper会来救援.但对扫地机知之甚少.

所以,任何人都可以建议走哪条路?

Sco*_*ott 5

Tempfile将在对象完成时删除文件.

Rdoc上的Tempfile

例:

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

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


Max*_*man 1

您可以使用 cron 任务,每 n 分钟删除一次文件,或者您可以从控制器本身命令删除。