42

AWS が初期化されていないと言っています。私は aws-sdk-core gem を使用しています。

代わりに aws-sdk gem を使用してみましたが、問題は解決しませんでした。

これは initializers/aws.rb ファイルです。

AWS.config(:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
                      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'])

s3 = AWS::S3.new
AVATAR_BUCKET = s3.buckets[ENV['AVATAR_BUCKET_NAME']]

サーバーを実行したり、コンソールを開こうとすると、次のエラーが表示されます。

/initializers/aws.rb:1:in `': 初期化されていない定数 AWS (NameError)

4

7 に答える 7

113

このエラーが発生し、「aws-sdk」gem がインストールされている場合は、意図せずに aws-sdk gem のバージョン 2 にアップグレードした可能性があります。バージョン 2 は、Awsではなく名前空間を使用しますAWS。これにより、バージョン 1 とバージョン 2 を同じアプリケーションで使用できます。

詳細については、このブログ投稿を参照してください。

于 2015-02-05T22:46:37.683 に答える
24

-v1のバージョンをインストール/使用する必要がありaws-sdkます。単に実行するgem 'aws-sdk'か、代わりにrequire 'aws-sdk'の 2.x バージョンを使用する場合がありますaws-sdk

混乱を避けるために、1.x を必要とするスクリプトの場合は、次を使用します。

require 'aws-sdk-v1' # not 'aws-sdk'

2.x を必要とするスクリプトの場合は、次を使用します。

gem 'aws-sdk', '~> 2'

GitHubのドキュメントが示すように。

于 2015-03-02T20:53:50.010 に答える
7

gem がロード パスに存在しないか、必要とされていないように思えます。

あなたのエントリGemfile

gem 'aws-sdk'

またはrequire 'aws-sdk'でアプリを起動する限り、これはアプリケーションの初期化時に暗黙的に aを実行します。bundle exec rails serverbundle exec rails console

または、上記のコードが Rails 以外のアプリケーションにある場合はrequire 'aws-sdk'、最初の行に配置します。

于 2014-04-03T02:40:27.953 に答える