【问题标题】:How do I generate files and then zip/compress with Heroku?如何生成文件,然后使用 Heroku 压缩/压缩?
【发布时间】:2011-05-02 00:39:09
【问题描述】:

我有点想做the reverse of this.

我不想解压缩并将集合文件添加到 S3 中

根据用户要求:

  1. 生成一堆xml文件
  2. 压缩带有一些图像的 xml 文件(托管在 s3 上的预先存在的图像)
  3. 下载压缩包

有人知道这样做的好方法吗?我想我可以在普通机器上解决这个问题,但是 Heroku 使事情变得有些复杂,因为它有一个只读文件系统。

【问题讨论】:

    标签: ruby-on-rails compression amazon-s3 heroku


    【解决方案1】:

    来自read-only filesystem 上的heroku 文档:

    有两个可写目录:./tmp 和 ./log(在您的应用程序根目录下)。如果您希望在请求期间临时删除文件,您可以写入像 #{RAILS_ROOT}/tmp/myfile_#{Process.pid} 这样的文件名。无法保证此文件会在后续请求中存在(尽管可能存在),因此不应将其用于任何类型的永久存储。

    您应该能够非常轻松地将生成的 xml 文件写入 tmp/ 并跟踪名称,下载 s3 文件并将其写入同一目录,并且(也许?)调用 zip 命令,只要输出在tmp/ 中,然后使用正确的 mime 类型将文件提供给浏览器以提示下载。我只关心文件大小有多大,以及 heroku 对 tmp 目录中允许的内容是否有未记录的限制。特别是由于您只在单个请求期间执行此操作以进行一次性下载,我认为您很有可能能够做到。

    编辑:环顾四周,如果您想避免调用系统命令,可能可以使用 RubyZip 之类的东西来创建您的 zip 文件。

    【讨论】:

    • 好吧,布雷特,这听起来像是赢家。首先,我认为在请求期间我们只需要 zip。如果不再需要它,我们可以将它移到 s3... 是的,这听起来可行。干杯!
    • rubyzip 在创建与 Windows 兼容的 zip 文件时遇到问题。 rubyzip2 和 zip gem 也有同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多