2010-10-28 102 views
5

我有点想做the reverse of this.如何生成文件,然后用Heroku压缩/压缩?

相反解压并添加收集文件S3我想

在用户的请求:

  1. 产生了一堆的XML文件
  2. 拉链带有一些图像的xml文件(在s3上托管预先存在的图像)
  3. 下载zip

有没有人知道这样做的好方法?我想我可以在普通机器上管理这个没问题,但是Heroku有点复杂,因为它有一个只读文件系统。

回答

4

从Heroku的文档上read-only filesystem

有两个目录是可写的:./tmp和./log(在你的应用程序根目录)。如果您希望在请求期间临时删除文件,则可以写入文件名,如#{RAILS_ROOT}/tmp/myfile _#{Process.pid}。不能保证这个文件会在后续请求中出现(尽管它可能是),所以这不应该用于任何类型的永久存储。

你应该能够很轻松地将生成的XML文件写入到tmp/和跟踪的名称,下载和S3文件写入到同一目录,以及(也许?),只要调用一个zip命令输出为tmp/,然后使用正确的MIME类型将文件提供给浏览器以提示下载。我只关心文件大小有多大,以及如果heroku在tmp目录中允许的内容有无限制的限制。特别是因为您只在单个请求期间执行一次性下载操作,所以我认为您很有可能做到这一点。

编辑:放眼一下,如果你想避免调用系统命令,你可以使用来创建你的zip文件,如

+0

好吧布雷特,这听起来像是一个赢家。首先,我认为我们只会在请求期间需要zip。如果需要的话,我们可以把它推到s3 ...是的,这听起来很可靠。干杯! – digitalWestie 2010-10-28 23:19:57

+0

ruby​​zip在创建与Windows兼容的zip文件时遇到了问题。 rubyzip2有相同的问题,zip gem也是如此。 – 2011-09-15 02:27:50