Подтвердить что ты не робот

Можно ли настроить Paperclip для создания URL-адресов HTTPS для S3?

Я использую 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
4b9b3361

Ответ 1

Вам просто нужно добавить:

:s3_protocol => :https

Это описано в документации.

Существует несколько специфичных для S3 опций для has_attached_file:
...

  • s3_protocol: протокол для URL-адресов, сгенерированных для ваших активов S3. Может быть либо "http", либо "https". По умолчанию "http", когда ваши: s3_permissions: public_read (по умолчанию) и "https, когда ваши: s3_permissions - это что-то еще.

Ответ 2

Чтобы обновить свой код, просто добавьте: 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"