我正在使用最新版本的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求助!
答案 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