2010-09-26 65 views
1

我想由於我使用的Heroku通過用ruby-graphviz創建一個圖像,從heroku發送給s3?

@graph.output(:output => "png", :file => "public/images/graph.png") 

,使圖形的圖像使用紅寶石graphviz的,我怎麼可以在本地保存的圖像,並將其發送到S3存儲,或者只是發它直接到S3桶?我會很感激任何幫助。

回答

1

有兩個目錄是 寫:./tmp和./log(下 您的應用程序根目錄)。如果您希望 暫時刪除 持續時間的文件,您可以將 寫入文件名如 #{RAILS_ROOT}/tmp/myfile_#{Process.pid}。 不保證此文件 將在後續請求 (儘管它可能)存在,所以這應該 不能用於任何類型的永久 存儲。

http://docs.heroku.com/constraints

0

所以,你可以寫信給tmp/目錄應用程序根目錄下,只要你不要指望它在那裏的一個請求。所以你必須在一個請求週期內完成所有工作(或者一個延遲工作)。

以下是您需要做的事情。運行任何腳本來生成您的文件並將其寫入tmp/。然後在S3後端使用類似Paperclip的文件將文件保存到S3。確保您使用S3存儲後端(默認情況下Paperclip使用FS);而不是刷寫寫入文件系統,它使用AWS :: S3 gem將它們上傳到S3。你可以在這裏閱讀更多關於它的內容:http://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/storage/s3.rb

或者你可以隨時使用你喜歡的任何寶石或庫將它上傳到S3。

我在夫妻生產網絡應用中使用這種方法。你不能指望tmp /存在於請求之間,但在一個請求之內它是可靠的。