【问题标题】:Refile and 'aws-sdk' V2 gem getting Missing Region Error重新归档和“aws-sdk”V2 gem 得到缺少区域错误
【发布时间】:2016-12-01 13:04:56
【问题描述】:

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

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

宝石文件:

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(prefix: "cache", **aws)

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

我尝试设置一个新的initializer aws.rb

需要'aws-sdk'

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

但它不起作用。

10 倍的帮助!

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

      env | grep AWS_REGION
      

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

      export AWS_REGION="us-west-2"
      

      【讨论】:

      • 当 OP 运行测试时会发生错误......您通常应该避免让您的测试访问网络,它会减慢速度并可能导致不必要的副作用。因此,您可能不想定义缺少的环境变量,而是想禁用 Rails 初始化程序中的 Refile 后端,如另一个答案所示;)
      猜你喜欢
      • 2015-11-20
      • 2021-01-02
      • 2018-04-11
      • 2022-09-30
      • 2016-12-21
      • 2021-07-26
      • 1970-01-01
      • 2018-03-02
      • 2015-11-05
      相关资源
      最近更新 更多