Paperclip + AWS S3,使用我的本地路径前缀远程路径

时间:2013-10-29 15:34:57

标签: ruby-on-rails amazon-web-services amazon-s3 ruby-on-rails-4 paperclip

我正在使用Paperclip和Rails 4应用程序以及Amazon S3存储。在我的开发机器上,该站点正在

运行
/Users/Jeff/Sites/example.com/web

当我将带有Paperclip的文件上传到S3时,S3中的远程路径会继承我的本地文件夹结构。

http://s3.amazonaws.com/example_com_bucket/Users/Jeff/Sites/example.com/web/public/assets/uploads/my_class/8/medium/some_image.png?1383060287

为什么会这样?如何剥离该部分?我尝试更改:path属性,但这似乎只影响路径的“应用程序”部分(例如在/assets/uploads之后)我的网站仍在开发中,所以我不在乎必须保留链接。

我的配置是......

  config.paperclip_defaults = {
    :storage => :s3,
    :path => '/:class/:attachment/:id_partition/:style/:filename',
    :s3_credentials => {
      :bucket => 'example_com_bucket',
      :access_key_id => '...',
      :secret_access_key => '...'
    }
  }

1 个答案:

答案 0 :(得分:0)

当我使用:url参数我应该使用:path参数时,我遇到了同样的问题:

has_attached_file :primary_photo,
                    :styles => ...,
                    :storage => :s3,
                    :s3_host_name => 's3-us-west-2.amazonaws.com',
                    :s3_credentials => 'config/s3.yml',
                    :url => '/product/:attachment/:id/:style/:filename'

我通过将配置更改为此来修复它:

has_attached_file :primary_photo,
                    :styles => ...,
                    :storage => :s3,
                    :s3_host_name => 's3-us-west-2.amazonaws.com',
                    :s3_credentials => 'config/s3.yml',
                    :path => '/product/:attachment/:id/:style/:filename'