エラー内容
Rubyでaws-sdkを実行したところ、以下のエラーメッセージがでて実行エラーになりました。
aws-sdk for ruby実行時のエラーメッセージ
uninitialized constant AWS (NameError)
aws-sdkのインストールコマンド
>gem install aws-sdk
実行したrubyのソースコード
require 'aws-sdk' 〜中略〜 s3 = AWS::S3.new region: "ap-northeast-1" <- ここでエラーになった 〜以下省略〜
原因
aws-sdk for rubyのメジャーバージョンが上がっていた事が原因gem install aws-sdk
を実行するとver.1では無く、ver.2がインストールされる
(2015/2/6時点ではver.1がインストールされたのに、いつのまにか・・・)
参考: Upcoming Stable Release of AWS SDK for Ruby – Version 2 – AWS Developer Blog – Ruby
以前のaws-sdk for rubyのバージョン(1.61.0)
C:UsersAdministrator>gem list *** LOCAL GEMS *** aws-sdk (1.61.0) aws-sdk-v1 (1.61.0) bigdecimal (1.2.0) io-console (0.4.2) json (1.7.7) mini_portile (0.6.2) minitest (4.3.2) nokogiri (1.6.6.2 x64-mingw32) psych (2.0.0) rake (0.9.6) rdoc (4.0.0) test-unit (2.0.0.0)
現在のaws-sdk for rubyのバージョン(2.0.23)
C:UsersAdministrator>gem list *** LOCAL GEMS *** aws-sdk (2.0.23) aws-sdk-core (2.0.23) aws-sdk-resources (2.0.23) bigdecimal (1.2.0) builder (3.2.2) io-console (0.4.2) jmespath (1.0.2) json (1.7.7) minitest (4.3.2) multi_json (1.10.1) multi_xml (0.5.5) psych (2.0.0) rake (0.9.6) rdoc (4.0.0) test-unit (2.0.0.0)
対処方法
- aws-sdk for rubyのver.1を明示的にインストールする
>gem install aws-sdk -v "~>1"
- rubyのソースコードでaws-sdk for rubyのver.1を明示的にrequireする
require 'aws-sdk-v1' 〜中略〜 s3 = AWS::S3.new region: "ap-northeast-1" 〜以下省略〜
以上です。
元記事はこちらです。
「最新aws-sdk for rubyインストール後にuninitialized constant AWS (NameError)エラー時の対処」