使用Paperclip和AWS S3的自定义URL

我们正在使用带有aws-sdk gem的Paperclip在我们的Rails应用程序中存储和显示图像:

class User ', medium: '600x600>', thumb: '200x200>' }, default_url: 'missing_photo.png' end 

如果我在html.erb文件中使用 ,我会得到以下HTML: <img src="https://s3.amazonaws.com//users/images/000/000/001/medium/my_image.png?1419989041">

如何将https://s3.amazonaws.com/作为自定义URL(如https://example.com ? 我的域名全部设置在Cloudfront及其SSL证书中。

我查阅了Paperclip S3 Storage文档 。 有一个:url选项,但我为该选项编写的任何内容似乎都无效。

我刚遇到这个问题,这里是我必须使用的设置

 :s3_host_alias => "s3.example.com", :url => ":s3_alias_url", :path => ":class/:attachment/:id.:style.:extension" 

从这个链接 ,我了解到,除了:s3_host_alias:url ,你必须指定path这样你就不会得到

 Paperclip::InfiniteInterpolationError 

Kinda运作良好,因为默认的回形针路径无论如何都有点不可思议。

更新

我汇总了一个例子,并且能够使用以下内容:

 class User < ActiveRecord::Base has_attached_file :profile_picture, styles: { :medium => "300x300>", :thumb => "100x100>" }, path: 'users/:attachment/:style-:hash.:extension', hash_secret: "94dfda08e2ed473257345563594dfda08e2ed473257345563594dfda08e2ed473257345563594dfda08e2ed4732573455635", default_url: "/images/:style/missing.png", storage: :s3, s3_protocol: 'http', url: ':s3_alias_url', s3_host_alias: 'distro1234.cloudfront.net', s3_credentials: { access_key_id: 'access_id', secret_access_key: 's3cr3tK3y!', acl: 'private', bucket: 'my-bucket', bucket_url: 'https://my-bucket.s3.amazonaws.com', } validates_attachment_content_type :profile_picture, :content_type => /\Aimage\/.*\Z/ 

结束

以下Gemfile

 gem 'paperclip' gem 'aws-sdk', '~> 1.5.7' 

Rails控制台:

 => u.profile_picture.url => "http://sofzh.miximages.com/ruby-on-rails/original-95eb509f9c81a341945a5a65e59e81880a739d39.jpg?1429638820" 

尝试这样的事情:

 has_attached_file :image, storage: :s3, s3_credentials: 'config/s3.yml', s3_protocol: :https, styles: { curriculum: '120x120>', medium: '600x600>', thumb: '200x200>' }, url: ':s3_alias_url', s3_host_alias: 'example.com', default_url: 'missing_photo.png'