未定义的方法'presigned_post'aws-sdk gem Rails 4

时间:2016-05-03 00:51:34

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

我正在尝试通过aws-sdk gem实现直接上传到S3。出于某种原因,尝试使用presigned_post方法创建上传的网址时出现错误undefined method 'presigned_post' for nil:NilClass。这是我到目前为止的设置:

aws.rb

Aws.config.update({
  region: 'us-east-2',
  credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']),
})

S3_BUCKET = Aws::S3::Resource.new.bucket(ENV['S3_BUCKET_NAME'])

uploads_controller.rb

def set_s3_direct_post
  @s3_direct_post = S3_BUCKET.presigned_post(key: "uploads/#{SecureRandom.uuid}/${filename}", success_action_status: '201', acl: 'public-read')
end

我相信它可能与调用S3_BUCKET的方式有关,但我尝试了几种不同的方式,每次都会返回相同的错误。

1 个答案:

答案 0 :(得分:0)

Alex,我遇到了同样的问题,结果发现我的初始化程序的顺序已关闭,我的bucket.presigned_post试图在空对象(存储桶)上执行。拿一个look at this,看看它是否对您没有帮助。