我使用Paperclip设置应用程序以涵盖用户头像的问题。我想在亚马逊s3上存储文件。我找不到解决这个问题的方法所以最后我决定在这里问:
以下是用户模型中的连接设置:
has_attached_file :avatar,
:styles => { :small => "150x150#", :medium => "300x300#" },
:storage => :s3,
:s3_credentials => Rails.root.join('config/s3.yml')
然后这是s3.yml文件:
bucket: sghub
access_key_id: ###
secret_access_key: #####
当然在我的gemfile中我添加了:
gem 'paperclip'
gem 'aws-s3', :require => 'aws/s3'
该应用程序部署在Heroku上,因此我从heroku logs
命令获得的错误是这样的:
2012-02-20T07:13:58+00:00 app[web.1]: AWS::S3::PermanentRedirect (The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.)
同样在开发模式下,错误页面如下:
Errno::EINVAL in UsersController#update
Invalid argument
此外,文件似乎没有在s3上传,因为它们在我的存储桶中的管理控制台中不可见。我现在几乎不知道,因为我试图在所有教程和文档中设置所有内容。有什么想法吗?
答案 0 :(得分:0)
:bucket
选项应位于选项哈希中的:s3_credentials
键之外。看起来像这样:
has_attached_file :avatar,
:styles => { :small => "150x150#", :medium => "300x300#" },
:storage => :s3,
:s3_credentials => Rails.root.join('config/s3.yml')
:bucket => 'sghub'
从bucket
config/s3.yml
以下是文档:http://rubydoc.info/gems/paperclip/Paperclip/Storage/S3