轨道上的红宝石 - 重新归档并'aws-sdk' V2 gem 出现缺少区域错误



我使用最新版本的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"

重新文件.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(前缀:"cache",**aws)

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

我尝试设置一个新的初始值设定项aws.rb:

需要"aws-sdk"

Aws.config.update({区域:'us-west-2',credentials:Aws::credentials.new('kid','secret')})

但它没有起作用。

10x感谢您的帮助

找到了答案:只需添加到初始化程序/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

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

env | grep AWS_REGION

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

export AWS_REGION="us-west-2"

最新更新