Ruby on Rails / Paperclip / AWS :: S3 :: NoSuchBucket错误

时间:2009-08-28 13:15:07

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

我安装了paperclip插件,并且能够在本地使用它。当我配置它与亚马逊S3一起使用时,我不断收到NoSuchBucket(指定的存储桶不存在)错误。 Paperclip文档指出如果存储桶不存在但是很清楚,则会创建存储桶 我的情况出了问题。

我首先打破了aws-s3 gem(v0.6.2) 然后还安装了right_aws gem(v1.9.0)

都有相应的

config.gem "aws-s3", :lib => "aws/s3"
config.gem 'right_aws', :version => '1.9.0'

environment.rb文件中的行

带回形针的image.rb文件的代码如下:

class Image < ActiveRecord::Base

    belongs_to  :work

    has_attached_file :photo, :styles => {:big => "612x1224>", :small => "180X360>", :thumb => "36x36#"},
                      :storage => 's3',
                      :s3_credentials => YAML.load_file("#{RAILS_ROOT}/config/s3.yml")[RAILS_ENV],   
                      :path => ":attachment/:id/:style/:basename.:extension",
                      :bucket => 'my-unique-image-bucket'

    attr_protected :photo_file_name, :photo_content_type, :photo_size

    validates_attachment_presence :photo
    validates_attachment_size :photo, :less_than => 3.megabytes
    validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png', 'image/gif']

end

5 个答案:

答案 0 :(得分:3)

我不完全确定这是它,但是你加载的s3_credentials与我在生产网站上使用的不同。

我的配置行是:

:s3_credentials => "#{RAILS_ROOT}/config/s3.yml"

而不是

:s3_credentials => YAML.load_file("#{RAILS_ROOT}/config/s3.yml")[RAILS_ENV]

答案 1 :(得分:1)

它应该创建但是桶,但这在某一点上是一个错误:

http://groups.google.com/group/paperclip-plugin/browse_thread/thread/42f148cee71a0477

我最近遇到了这个问题,结果证明服务器时间非常大,s3不允许任何更新“未来那么多”或类似但导轨错误是NoSuchBucket ......令人困惑

...

答案 2 :(得分:0)

我已经为firefox安装了s3fox插件,并使用该插件创建了存储桶。现在Paperclip可以正常使用S3,因为已经创建了已识别的存储桶。

但我仍然对回形针无法用上面的代码创建新桶感到好奇。

答案 3 :(得分:0)

如果有人通过谷歌结束了这里:当我错误地改变了传递给AWS::S3::S3Object.store的第2和第3个参数的顺序时,我看到了同样的错误。

答案 4 :(得分:0)

不是你的情况,但是AWS不允许在存储桶名称中使用大写字母而回形针不会检查,create_bucket失败。