A current requirement is that assets uploaded to Amazon S3 must be accessed via SSL and use an expiring URL. Using an expiring url with Paperclip is extremely easy.
my_model.image.expiring_url(5)
The problem is expiring_url doesn’t let you choose a style and doesn’t use https, which breaks our SSL site. To add the behaviour was an easy “hack”. I added the file /config/initializers/paperclip.rb with the following code:
module Paperclip
module Storage
module S3
def expiring_url(style = default_style, time = 3600)
AWS::S3::S3Object.url_for(path(style),
bucket_name,
:expires_in => time,
:use_ssl => true)
end
end
end
end
Now calling my expiring image URL with a style and over https is just:
my_model.image.expiring_url(:original, 5)