2013-11-26 89 views
3

背景:後處理S3資產與回形針

我已經實現用戶定義的裁剪圖像上傳大致爲每Ryan Bates Railscast #182

設置爲:file存儲方法時有效,但設置爲:s3時無效。在添加中間裁剪步驟之前,S3存儲工作正常。

從服務器日誌,它出現在本地尋找源文件:由這點

[paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: /profiles/pictures/000/001/543/original/headshot.jpg is not recognized by the 'identify' command.> 

存在此文件在S3上,但不在本地,因爲上載被裁剪前處理(以及之後)。

我的問題:

我怎樣才能把文件下來從S3到本地服務器的第二工序之前?

N.B.我已經看過其他答案。

Paperclip looking for file locally for reprocessing when using S3 - 似乎相關,但唯一的答案是降低迴形針。我做不到,除此之外,這個答案既沒有被提出也沒有被接受。

Error reprocessing in Paperclip 2.3.5 - 這是關於Paperclip的舊版本。

其他的想法:

它發生,我認爲另一個方法是將文件存儲在本地,直到它已被裁剪,然後用DelayedJob或類似的東西把它上傳到S3以後。雖然這會有更多的工作,所以我現在寧願避免它。

回答

0

爲了更好地理解發生了什麼,看到您的模型設置會很酷。具體而言,我正在尋找「has_attached_file」設置。

只是爲了掩飾什麼我在尋找知識:這裏有一個例子

has_attached_file :picture, 
       path: <optional, default is fine.> 
       url: ':s3_alias_url', 
       s3_protocol: 'https', 
       s3_host_alias: 'cdn.<something>.com' (or, s3.amazonaws.com/bucketname/, 
       storage: :s3, 
       s3_credentials: Proc.new{ |a| a.instance.credentials } 

當你重新處理圖像時,它應該向下帶入一個臨時文件,並在那裏進行處理,然後重新上傳這些設置。

基於profiles/pictures/000/001/543/original/headshot.jpg,它幾乎看起來像抓住你的路徑變量,但不會去你的S3桶獲取該圖像。所以我會特別檢查存儲值。

隨着更多信息,我可以適當更新我的答案。

+0

嗨,我實際上已經把一切都轉移到蜻蜓前段時間了!但在git中,原始代碼是:'has_attached_file:picture,:styles => {...},:default_url =>'missing_:class_:attachment/missing_:style.png',:storage =>:s3, :s3_credentials => S3_CONFIG' – Leo

+0

嗯,快速瀏覽一下Git的回形針給了我這些鏈接。 本文描述了回形針設置定義的更改: https:// github。com/thoughtbot/paperclip/issues/1405 這篇文章描述了一個類似的問題,但是來自這篇原文的幾年後,仍然是開放的。 https://github.com/thoughtbot/paperclip/issues/2217 這就是說,我相信我已經得到我的圖像重新處理(從S3下拉並重新上傳),所以我會嘗試按照這個教程,構建項目並更新我的答案。 –