2

我剛升級到Rails 3.2,我正在使用帶回形針的Amazon S3將照片上傳到我的應用。Rails 3.2回形針S3無法在本地主機加載

我的圖片網址前會:

http://s3.amazonaws.com/dealphotos.website.com/photos/428/large/Sandisk120Drive?1334754504 

現在在本地主機上我的圖片網址:

http://s3.amazonaws.com/dealphotos.website.com/deals/photos/000/000/428/large/Sandisk120Drive?1334754504 

注意附加000/000的 - 即使我帶他們出去參觀鏈接它說:

<Error> 
    <Code>AccessDenied</Code> 
    <Message>Access Denied</Message> 
    <RequestId>"Long String of Numbers"</RequestId> 
    <HostId> 
    "Gives me a really long string of letters and numbers" 
    </HostId> 

我的交易模式:

has_attached_file :photo, :styles => { :small =>"268x160>", :large =>"350x250>" }, 
      :storage => :s3, 
      :bucket => 'dealphotos.website.com', 
      :s3_credentials => { 
      :access_key_id => ENV['S3_KEY_SPICY'], 
      :secret_access_key => ENV['S3_SECRET_SPICY'] 
     } 

而且圖像不顯示!

在此之前,我只需要從Heroku中拉出來,所有的圖像和文件都將發展到我的開發中。這是怎麼回事?

回答

1

您很可能使用最新版本的Paperclip(版本> = 3)。

由於這是回形針的主要版本,因此舊版回形針存在記錄不兼容問題。

一個主要的(並且在我的書中)改變是資產的默認存儲位置已經改變。

此前它曾經是/system/:attachment/:id/:style/:filename.:extension(從內存)。例如,如果您有兩個具有相同名稱的附件(公司徽標和產品徽標),則這將是災難性的。

現在,通過使用回形針新的路徑是/system/:class/:attachment/:id_partition/:style/:filename.:extension

這意味着您的所有資產將被保存在由上面指定的目錄。 :使用id_partitions,以便一個目錄中的節點(文件/目錄)的數量不超過1000.

我希望我能夠解釋爲什麼你看到問題。默認路徑已更改。

您現在有2個選項 -

  1. 移動舊資產到正確的位置在新的目錄方案(痛苦的,但推薦)。

  2. 將新資產移動到舊的目錄結構中,並在模型的附件定義中添加:url +:path選項以繼續使用較舊的方案。 (見https://github.com/thoughtbot/paperclip/blob/master/UPGRADING)。

因爲它看來,你在這兩個新的結構和舊有圖像。所以不管你決定什麼文件都需要從一個結構移到另一個結構。除非資產以某種方式加入書籤,否則我建議您將舊資產移動到新的目錄結構中。

+0

如果您剛剛更新到新版本,你沒有在新的目錄結構的資產,你可能鎖定您的Gemfile來〜> 2.0版本回形針,重拾舊功能。 –

相關問題