2012-09-28 22 views
0

對於可能導致我的問題的任何反饋,我將不勝感激,如下所述。新上傳的圖片突破生產但未開發

我有一個應用程序,允許用戶上傳圖片。在開發過程中一切正常,並且在生產中用於正常工作。

最近,我的新圖像全部壞掉了。我可以上傳新圖片,但幾小時後查看時,圖片又被打破了。這開始發生在一個星期前,我以前製作的圖像仍然可以。

我正在使用Rails與Bootstrap和SimpleForm,並使用Paperclip的圖像。我在開發和生產中使用Postgres,並正在部署到Heroku。

我唯一的提示是在用戶沒有上傳個人頭像時用作默認圖像的「blank_profile_pic.png」圖片。

User.all.each do |u| 
    if u.profile_pic.file? 
    image_tag(user.profile_pic) 
    else 
    image_tag("blank_profile_pic.png") 
    end 
end 

對於沒有profile_pic上傳的用戶,如果他們的個人資料是在上週建立出現破碎的形象,但預計「blank_profile_pic.png」仍然是該問題之前創建自己的帳戶的人一週前開始出現。同一塊代碼如何在近期用戶和舊用戶之間返回不同的結果?

我真的不知道從哪裏開始,所以將不勝感激任何可能的原因,並且如果有任何其他文件,我可以在這裏顯示。

非常感謝您的幫助!

回答

1

Heroku是一個只讀系統。所以你絕對必須將你的圖片上傳到S3或其他提供的雲。

您的圖片可能已上傳到Heroku中的/ tmp,然後以某種方式將其清除,因此出現錯誤。

下面是文檔:https://devcenter.heroku.com/articles/read-only-filesystem

和配置回形針與S3:https://github.com/thoughtbot/paperclip#storage

+0

感謝@Benjamin,您的意見。看來問題可能是Heroku最近更改了數據庫計劃,並正在將開發應用程序移至新數據庫。 (我剛剛意識到我在收件箱中有關於此的電子郵件)。我會在明天完成移動後看到應用的響應情況。關於你對Heroku是隻讀的觀點,你是什麼意思?您是否暗示在Heroku上存儲數據比S3等替代品貴得多? – umezo

+1

它不是關於Heroku改變數據庫計劃。這意味着他們不允許你上傳數據(圖像,文件等)。因此,對於上傳功能,您必須查看第三方解決方案,例如Amazon S3,Cloudfront等。配置Paperclip來完成此操作已有詳細記錄。 –

+0

我沒有意識到這一點。所以他們不允許任何類型的附件,只接受字符串,整數,日期時間等?這似乎有點奇怪。你能指點我提到的文件嗎?我需要弄清楚如何處理我的圖像! – umezo

0

我不知道,如果你已經安裝了ImageMagick的寶石,但我們有同樣的問題與image_magic這是打破了我們回形針功能在生產中,但不在開發中(我知道,很奇怪)。然而,即使在本地從我們的gemfile和Gemfile.lock中刪除imagemagick(運行bundle install和所有這些東西),然後在heroku上恢復生產,錯誤仍然在生產中! (很奇怪,我知道)。

什麼落得這樣做的伎倆正在運行:

$ heroku repo:purge_cache -a myAppName 

(來自https://github.com/heroku/heroku-repo#purge_cache

當你部署應用程序,Heroku的緩存有些東西像你的資產和已安裝的寶石,以速度部署部署。雖然這是一個很棒的功能,但它有時會產生副作用,在這種情況下,似乎imagemagick gem的某些東西被「卡住」在生產的緩存中,這就是爲什麼清除解決了我們的問題(因爲清除後,您的應用將在您的下一次部署中從頭開始重建)