こんにちは、cloudpack三浦剛慈 です。

エラー内容

Rubyaws-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)

対処方法

  1. aws-sdk for rubyのver.1を明示的にインストールする
    >gem install aws-sdk -v "~>1"
    
  2. 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)エラー時の対処