Paperclip 2.3.5至3.3.1导致url与路径不同

时间:2013-03-11 06:56:28

标签: ruby-on-rails paperclip rails-3-upgrade

我正在将我的rails应用程序从2.3升级到3.2,我遇到了回形针的问题。我的应用程序之前使用的是paperclip v2.3.5,现在我使用的是带有paperclip v3.3.1的rails 3.0.20

当我尝试将头像上传到S3时会出现问题。看起来像回形针在将它发送到S3之前逃离路径,但是当我要求特定样式的url时,url使用非转义版本的路径,这导致S3出现“NoSuchKey”错误(更像是找不到404)

在我的模特中我有

Paperclip.interpolates :last_modified do |attachment, style|
  attachment.instance.updated_at.to_i
end

:path => "folder/:id/:style.:extension?:last_modified",
:url  => ":s3_domain_url",



所以我的应用程序的旧版本使用S3的网址:

http://my-bucket.s3.amazonaws.com/folder/123/thumbnail.png?123456789



但是现在,每次我上传一个头像,S3都会存储这样的网址:

http://my-bucket.s3.amazonaws.com/folder/123/thumbnail.png%3F123456789

并向我的模型询问缩略图样式的网址,将返回:

http://my-bucket.s3.amazonaws.com/folder/123/thumbnail.png?123456789

哪个S3找不到。



我知道它似乎是一个容易解决的问题,但我主要担心的是生产应用程序有很多用户有很多图片并更新他们所有的图像是一项微妙的任务,并且手动转义问号不是解决方案

1 个答案:

答案 0 :(得分:3)

我刚刚想出了如何解决类似的问题。有一个新的escape_url选项。也许尝试将其转为false

:path => "folder/:id/:style.:extension?:last_modified",
:url  => ":s3_domain_url",
:escape_url => false