Refile и гем 'aws-sdk' V2 получает ошибку отсутствия региона

Я использую последнюю версию гема refile для загрузки изображений в AWS, и он работает нормально. когда я пытаюсь протестировать свое приложение с помощью rspec, я получаю эту ошибку:

/aws-sdk-core/plugins/regional_endpoint.rb:34:in `after_initialize ': отсутствует регион; используйте параметр: region или экспортируйте имя региона в ENV ['AWS_REGION'] (Aws :: Errors :: MissingRegionError)

Gemfile:

драгоценный камень "refile", требуется: "refile / rails"

драгоценный камень "refile-mini_magick"

самоцвет "refile-s3"

refile.rb

требуется 'refile / simple_form'

требуется "refile / 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', учетные данные: Aws :: Credentials.new ('akid', 'secret')})

но это не сработало.

В 10 раз за вашу помощь!


person user3275852    schedule 27.07.2016    source источник


Ответы (2)


нашел ответ: просто добавьте в свои инициализаторы / 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
person user3275852    schedule 07.08.2016

Похоже, ваш код ищет значение AWS_REGION как переменную среды. Проверяли ли вы, что значение AWS_REGION устанавливается в вашей среде, перед запуском тестов? Вы можете увидеть, установлен ли он в bash, выполнив следующие действия:

env | grep AWS_REGION

Если он не установлен, просто нужно установить переменную так (снова в bash):

export AWS_REGION="us-west-2"
person Kel Cecil    schedule 27.07.2016
comment
Ошибки возникают, когда OP запускает тесты ... обычно вам следует избегать доступа ваших тестов к сети, это замедляет работу и может вызвать нежелательные побочные эффекты. Таким образом, вы, вероятно, не хотите определять отсутствующую переменную среды и вместо этого хотите отключить бэкенды Refile в инициализаторе рельсов, как показано в другом ответе;) - person Sunil D.; 27.05.2020