2012-02-01 64 views
0

因此,我有一個用戶模型,並且在用戶註冊時,我需要生成一個包含特定用戶信息的文件。 Heroku不允許我這樣做。除了生成文件並將其寫入S3存儲桶並從中引用它之外,是否還有其他選項?在Heroku上創建文件遇到問題(Rails)

+0

什麼樣的用戶信息?這是不是你可以存儲在數據庫中的東西?關於什麼類型的信息以及如何在應用程序中使用它的更多信息會有所幫助。 – jstim 2012-02-01 19:15:10

回答

2

Heroku的文件系統是隻讀的。唯一的例外是tmp目錄,但那是暫時的。 S3是一個通用的解決方案。另一種可能是將「文件」保存到數據庫中(在遷移中使用「文本」列)。你也可以使用一些文件存儲,如CouchDB或MongoDB,並在那裏存儲你的「文件」。 Couch和Mongo有幾款Heroku附加軟件甚至提供免費套餐。

+0

需要生成的實際文件是一個xml文件。它相當短,但它確實有一些用戶變量。例如,用戶使用電話號碼註冊,並且該號碼需要位於xml Feed中。同樣,該提要需要在用戶註冊時生成,並且必須從資源(/user/file.xml)訪問。 – ghal 2012-02-01 20:28:02

+0

在閱讀了一些關於MongoDB的資料後,看起來這將是使用GridFS時的一個優雅解決方案。你認爲與S3相比有什麼優點/缺點嗎?數據存儲的混合是否會導致任何潛在問題? – ghal 2012-02-01 20:57:54

+0

Mongo vs S3的主要優勢在於S3比較慢。這對於大文件來說是一個很好的解決方案,但是如果您需要加載文件作爲服務客戶端請求的一部分,那麼S3的響應時間並不令人滿意。 – Elad 2012-02-02 06:06:53

0

在Cedar堆棧上,文件系統是短暫的,這意味着文件系統僅在dyno持續時間(這是一個未知的和不可預知的時間量)存在。

在較舊的堆棧上,只有/ tmp是可寫的,並且是短暫的。

因此,要生成文件並將其導出,您需要考慮如何交付文件。

如果稍後要下載,您是否可以隨時從數據庫生成文件(因此可以根本不需要寫出文件)。

如果現在要下載,請將其傳回給最終用戶。

它是出口到S3,這樣做。