1

refile gem の最新バージョンを使用してイメージを AWS にアップロードしていますが、正常に動作しています。アプリを rspec でテストしようとすると、次のエラーが発生します。

/aws-sdk-core/plugins/regional_endpoint.rb:34:「after_initialize」で: リージョンがありません。:region オプションを使用するか、リージョン名を ENV['AWS_REGION'] にエクスポートします (Aws::Errors::MissingRegionError)

Gemfile:

gem "refile", require: "refile/rails"

gem「refile-mini_magick」

gem「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(接頭辞: "キャッシュ", **aws)

Refile.store = Refile::S3.new(接頭辞: "store", **aws)

新しいイニシャライザ aws.rbを設定してみました:

「aws-sdk」が必要

Aws.config.update({ リージョン: 'us-west-2', 認証情報: Aws::Credentials.new('akid', 'secret') })

しかし、うまくいきませんでした。

あなたの助けのために10倍!

4

2 に答える 2

1

答えが見つかりました: initializers/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 に答える