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