APIからキャッシュした画像をS3バケットにアップロードするレーキタスクがあります。私の見解では、画像を出力しようとしましたが、機能していないようです。私がやりたいのは、画像をファイルシステムにキャッシュしてS3に送信し、ファイルシステムではなくS3バケットからの画像の場所を使用したいです。私のコードは次のようになります。
Railsコンソールでは、画像のURLを確認するためだけにこれを行います。
1.9.3p125 :002 > a.image
=> http:://s3-eu-west-1.amazonaws.com/ramen-hut/pictures/1.jpg?1343645629
1.9.3p125 :003 >
アプリでペーパークリップを使用していますが、URLを「http://」として追加することになっていますか?かなり奇妙に思えます。私のindex.html.erbのコードは次のようになります。
<li>
<%= movie.title %>
<%= image_tag movie.image.url %>
</li>
しかし、これは次のhtmlになります。
<li>
Cowboy Bebop
<img alt="1" src="/assets/http:://s3-eu-west-1.amazonaws.com/ramen-hut/pictures/1.jpg?1343645629">
</li>
URLの前に「/assets」/が含まれているのはなぜですか?
チュートリアルに従って、ヨーロッパのS3バケットの画像URLを設定するようにペーパークリップを設定しました。だから私のenvironment.rbには、これがあります:
#Signature correction for Paperclip and AWS
AWS::S3::DEFAULT_HOST = "s3-eu-west-1.amazonaws.com"
そして、私は次のコードで私のinitialisersディレクトリにaws-signature.rbファイルを持っています:
#Makes Paperclip use the correct URL for images
Paperclip.interpolates(:s3_eu_url) { |attachment, style|
"#{attachment.s3_protocol}://s3-eu-west-1.amazonaws.com/#{attachment.bucket_name}/#{attachment.path(style).gsub(%r{^/}, "")}"
}