2

Railsアプリを2.3から3.2にアップグレード中ですが、ペーパークリップに問題があります。私のアプリは以前はペーパークリップv2.3.5を使用していましたが、現在はペーパークリップv3.3.1でレール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のURLを使用していました。

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



しかし今、私がアバターをアップロードするたびに、S3は次のようにURLを保存します:

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

モデルにサムネイルスタイルのURLを要求すると、次のようになります。

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

S3が見つけることができません。



問題を修正するのは簡単なようですが、私の主な懸念は、本番アプリには多くの写真を持っているユーザーが多く、すべての画像を更新するのは微妙な作業であり、疑問符を手動でエスケープすることは解決策ではないということです。

4

1 に答える 1

3

これに似た問題を修正する方法を見つけました。新しいescape_urlオプションがあります。多分それをに変えてみてくださいfalse

:path => "folder/:id/:style.:extension?:last_modified",
:url  => ":s3_domain_url",
:escape_url => false
于 2013-03-26T20:15:20.753 に答える