Можно ли настроить Paperclip для создания URL-адресов HTTPS? - PullRequest
56 голосов
/ 26 октября 2011

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

Ответы [ 2 ]

98 голосов
/ 26 октября 2011

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

:s3_protocol => :https

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

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

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

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