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版本回形针,重拾旧功能。 –

相关问题