1

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

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

宝石文件:

宝石“重新文件”,要求:“重新文件/导轨”

宝石“重新归档-mini_magick”

宝石“重新归档-s3”

重新文件.rb

需要'重新文件/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({ region: 'us-west-2', credentials: Aws::Credentials.new('akid', 'secret') })

但它没有用。

10x 为您提供帮助!

4

2 回答 2

1

找到答案:只需添加到您的初始化程序/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
于 2016-08-07T10:22:39.680 回答
0

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

env | grep AWS_REGION

如果未设置,则只需像这样设置变量(再次在 bash 中):

export AWS_REGION="us-west-2"
于 2016-07-27T13:51:30.260 回答