ruby - 通过 send_file 发送文件后,如何删除 Sinatra 中的文件?

标签 ruby sinatra

我有一个简单的 sinatra 应用程序,它需要生成一个文件(通过外部进程),将该文件发送到浏览器,最后从文件系统中删除该文件。沿着这些线的东西:

class MyApp < Sinatra::Base
  get '/generate-file' do

    # calls out to an external process, 
    # and returns the path to the generated file
    file_path = generate_the_file()  

    # send the file to the browser
    send_file(file_path)

    # remove the generated file, so we don't
    # completely fill up the filesystem.
    File.delete(file_path)

    # File.delete is never called.

  end
end

然而,似乎 send_file 调用完成了请求,并且它之后的任何代码都没有运行。

有没有办法确保生成的文件在成功发送到浏览器后被清理干净?或者我是否需要求助于在某个时间间隔运行清理脚本的 cron 作业?

最佳答案

不幸的是,当您使用 send_file 时没有任何回调。这里常见的解决方案是使用 cron 任务来清理临时文件

关于ruby - 通过 send_file 发送文件后,如何删除 Sinatra 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2806053/

相关文章:

ruby - 使用 sinatra 和 datamapper 进行延迟注册

ruby - 带有字符串参数的 Sinatra 应用程序的 Heroku rake 任务失败

ruby - 如何根据数组处理结果给变量赋值

ruby - 如何在 Ruby Sequel 任意 sql 运行中查找列名

Ruby:传递给函数的变量被更改

html - RSpec/Capybara - 测试表格页面

ruby - 如何获取 Sinatra 应用程序中的所有 URL 参数

ruby - 为什么我的 Heroku 支持的 Sinatra 应用程序的 PostgreSQL 中存在挥之不去的开放连接?

Ruby,需要读取文件的内容并将其拆分为较小的新文件

ruby - EventMachine、Redis 和 EM HTTP 请求