I'm using Paperclip to manage user-uploaded images on a site that is served entirely under HTTPS. In order to avoid the silly security warnings on IE7/IE8, I need to also serve these images over SSL. I typically render my images using something like the following:
<%= image_tag @product.image.url(:large) %>
where
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"
and the image URL produced is something like:
http://s3.amazonaws.com/media.example.com/images/6/large/image123.JPG
Is there a magic Paperclip option to change this to:
https://s3.amazonaws.com/media.example.com/images/6/large/image123.JPG
You simply need to add:
:s3_protocol => :https
This is covered in the documentation.
There are a few S3-specific options for has_attached_file:
...
s3_protocol
: The protocol for the URLs generated to your S3 assets. Can be either ‘http’ or ‘https’. Defaults to ‘http’ when your :s3_permissions are :public_read (the default), and ‘https’ when your :s3_permissions are anything else.