Refile和' aws-sdk' V2宝石遇到缺失区域错误

时间:2016-07-27 13:26:41

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

我正在使用最新版本的refile gem将图像上传到AWS,它运行正常。当我尝试使用rspec测试我的应用程序时,我收到此错误:

/aws-sdk-core/plugins/regional_endpoint.rb:34:在`after_initialize':缺少地区;使用:区域选项或导出区域名称到ENV [' AWS_REGION'](Aws :: Errors :: MissingRegionError)

的Gemfile:

gem" refile",要求:" refile / rails"

gem" refile-mini_magick"

gem" refile-s3"

refile.rb

要求' refile / simple_form'

要求"重新/ s3"

aws = {

access_key_id:ENV [' AWS_ACCESS_KEY_ID'],

secret_access_key:ENV [' AWS_SECRET_ACCESS_KEY'],

地区:ENV [' AWS_REGION'],

桶:ENV [' AWS_BUCKET']

}

Refile.cache = Refile :: S3.new(前缀:"缓存",** aws)

Refile.store = Refile :: S3.new(前缀:"存储",** aws)

我尝试设置新的初始化程序aws.rb

要求' aws-sdk'

Aws.config.update({   地区:' us-west-2',   凭据:Aws :: Credentials.new(' akid',' secret') })

但它不起作用。

10x求助!

2 个答案:

答案 0 :(得分:1)

您的代码看起来像是在寻找AWS_REGION值作为环境变量。您是否在运行测试之前验证了在您的环境中是否设置了AWS_REGION的值?你可以通过执行以下操作来查看它是否在bash中设置:

env | grep AWS_REGION

如果没有设置,那么只需要像这样设置变量(再次在bash中):

export AWS_REGION="us-west-2"

答案 1 :(得分:0)

找到了答案: 只需添加到初始化程序/ refile.rb:

require "refile/s3"
require 'refile/simple_form'

if Rails.env.production?
  aws = {
    access_key_id: ENV['AWS_ACCESS_KEY_ID'],
    secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
    region: ENV['AWS_REGION'],
    bucket: ENV['AWS_BUCKET']
  }

  Refile.cache = Refile::S3.new(prefix: "cache", **aws)
  Refile.store = Refile::S3.new(prefix: "store", **aws)
end