带有s3的Rails回形针 - 无效的参数

时间:2012-02-20 07:38:02

标签: ruby-on-rails amazon-s3 paperclip

我使用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上传,因为它们在我的存储桶中的管理控制台中不可见。我现在几乎不知道,因为我试图在所有教程和文档中设置所有内容。有什么想法吗?

1 个答案:

答案 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