将文件上传到S3时出错:缺少必需:bucket选项

时间:2013-03-24 17:36:20

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

我正在尝试使用回形针将数据上传到s3。我一直收到以下错误

  

缺少必需:桶选项

     

app / controllers / documents_controller.rb:64:block in update' app/controllers/documents_controller.rb:63:in更新'

我已使用适当的s3凭据更新了我的config / environments / development.rb。我在本地运行我的应用程序时遇到此错误,尚未在Heroku上尝试过。 有什么建议我还缺少什么吗?

document.rb

class Document < ActiveRecord::Base
  attr_accessible :documentId, :name, :docstack

  has_attached_file :docstack, styles: {
    thumb: '200x200',
    medium: '33x300>'
  }
end

development.rb

config.paperclip_defaults = {
  :storage => :s3,
  :s3_credentials => {
    :bucket => ENV['bucket'],
    :access_key_id => ENV['123'],
    :secret_access_key => ENV['key']
  }
}

更新 参考this博客 感谢

2 个答案:

答案 0 :(得分:0)

您是否定义了ENV变量值?

尝试添加此文件,

# /config/initializers/env.rb

ENV['s3_bucket'] = 'XXX'
ENV['s3_access_key_id'] = 'XXX'
ENV['s3_secret_access_key'] = 'XXX'

此代码发送到development.rb文件,

# /config/environments/development.rb

config.paperclip_defaults = {
  :storage => :s3,
  :s3_credentials => {
    :bucket => ENV['s3_bucket'],
    :access_key_id => ENV['s3_access_key_id'],
    :secret_access_key => ENV['s3_secret_access_key']
  }
}

然后将env.rb添加到您的.gitignore文件中,这样您的凭据就不会存储在GIT中,

# /.gitignore

/config/initializers/env.rb

答案 1 :(得分:0)

之前我遇到过类似的问题并看到了相同的错误消息。务必检查rails控制台是否正确设置了ENV变量(“$ ENV ['AWS_BUCKET']”)。尽管正确导出了env变量,但我的一个变量为零。重新启动终端后,它按预期工作..