2011-07-23 34 views
1

我正在建立一個小型網站,有一個相當大的圖片> 100個小本地人羣。如果我通過我的本地機器上的回形針將文件上傳到s3,他們工作得很好,但是當我將它推送到heroku時,那些照片就會被破壞(又指向錯誤的位置)。使用回形針+ heroku + s3 ...推送時本地上傳被破壞活

如果我從heroku提取實時數據庫(在我上傳照片到在線應用程序的情況下,然後拉動在線數據庫)。這些圖像不會加載到我的本地應用程序中。

有關如何使這項工作的任何想法?

編輯: 一些澄清的問題更多:我現在已經設置的路徑模型內,像這樣

:path => "/public/system/:attachment/:style/:id.:extension" 

現在它控制着URL訪問S3時的樣子。但是我的本地機器輸出以此爲圖片來源:

bucket/Users/msencenb/Development/appname/public/system/pictures/7/thumb/overlook.jpg?2011 

而Heroku的應用程序源看起來是這樣的:

bucket/app/public/system/pictures/7/thumb/overlook.jpg?2011 

正如你可以看到這是除了當地的一個非常相似注入的目錄結構也進入源路徑。我怎樣才能回形針的源路徑?

+0

您是否在生產和開發環境中使用相同的S3存儲桶? –

+0

是的同一個存儲桶 – Msencenb

+0

用回形針配置顯示你正在使用的模型。 –

回答

2

看到這個博客帖子:

http://codeglot.com/posts/68-upoading_pictures_to_apps_on_heroku

我已經有使用回形針和S3多個應用程序。這是我有它設置:

has_attached_file :picture, 
        :styles => {:large => "275x450>"}, 
        :storage => :s3, 
        :s3_credentials => "#{RAILS_ROOT}/config/s3.yml", 
        :path => "appname/:attachment/:style/:id.:extension" 

確保您更換appname與您的應用程序的名稱。例如您可以在heroku上訪問您的應用程序的子域。

+0

完美工作。注意:在將s3.yml添加到您的git項目之前請使用謹慎。考慮如何保護您的s3證書。 – mikeborgh

+0

確保你將它添加到.gitignore – s84

0

當您在本地計算機上工作時,使用本地數據庫的ID將文件上載到S3,當您推送到heroku時,如果您沒有使用本地內容更新遠程數據庫,則引用將會被打破。

+0

這是沿着正確的路線;然而,即使當我使用水龍頭將我的本地數據庫推到heroku時,圖像仍然被破壞。現在我必須重新上傳所有不是我想要的東西 – Msencenb

0

試着拿出你在你的路徑開始的正斜槓。

:path => "public/system/:attachment/:style/:id.:extension" 

(在Heroku用戶/ msencenb /開發/應用程序的名字在本地和應用程序),它不應該被考慮應用程序路徑類似。有什麼是造成它,如果把斜線取出不起作用,然後嘗試調查還有什麼會造成這種情況。

+0

使用'/ public/system'可能是問題所在,我只需在我的s3 heroku應用程序中使用'appname /:attachment /:style /:id。:extension' – Nilloc