web-dev-qa-db-ja.com

S3用のHTTPS URLを生成するようにペーパークリップを構成することは可能ですか?

Paperclipを使用して、完全にHTTPSで提供されているサイトでユーザーがアップロードした画像を管理しています。 IE7/IE8での馬鹿げたセキュリティ警告を回避するために、SSL経由でこれらの画像も提供する必要があります。私は通常、次のようなものを使用して画像をレンダリングします。

<%= image_tag @product.image.url(:large) %>

どこ

class Product < ActiveRecord::Base

  has_attached_file :image,
                  :styles => {
                      :large => {:geometry => "616x450#"}
                  },
                  :storage => :s3,
                  :s3_credentials => {:access_key_id => "xxx", :secret_access_key => "xxx"},
                  :path => ":attachment/:id/:style/:basename.:extension",
                  :bucket => CONFIG['s3_media_bucket'],
                  :default_url => "/assets/image_missing.png"

生成される画像のURLは次のようになります。

http://s3.amazonaws.com/media.example.com/images/6/large/image123.JPG

これを次のように変更する魔法のペーパークリップオプションはありますか?

https://s3.amazonaws.com/media.example.com/images/6/large/image123.JPG
58
cailinanne

あなたは単に追加する必要があります:

:s3_protocol => :https

これはカバーされています ドキュメントで

Has_attached_fileにはS3固有のオプションがいくつかあります。
...

  • s3_protocol:S3アセットに生成されたURLのプロトコル。 「http」または「https」のいずれかです。 :s3_permissionsが:public_read(デフォルト)の場合はデフォルトで「http」になり、:s3_permissionsがそれ以外の場合は「https」になります。
98
Jordan Running

コードを更新するには、次のように:s3_protocolを追加します。

class Product < ActiveRecord::Base
has_attached_file :image,
              :styles => {
                  :large => {:geometry => "616x450#"}
              },
              :storage => :s3,
              :s3_credentials => {:access_key_id => "xxx", :secret_access_key => "xxx"},
              :s3_protocol => :https,
              :path => ":attachment/:id/:style/:basename.:extension",
              :bucket => CONFIG['s3_media_bucket'],
              :default_url => "/assets/image_missing.png"
24
user2397178