2010-10-28 105 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