ruby-on-railsamazon-web-servicesruby-on-rails-4amazon-s3aws-sdk-ruby

Error "uninitialized constant AWS (NameError)"


It is saying AWS is uninitialized. I am usign the aws-sdk-core gem.

I tried using the aws-sdk gem instead, and the problem was still there.

This is the initializers/aws.rb file:

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']]

When I try running the server or opening the console I get this error:

/initializers/aws.rb:1:in `': uninitialized constant AWS (NameError)


Solution

  • You might getting this error, because you didn't define the correct aws sdk version in your Gemfile. This can happen while re-bundling old apps with version 1 or 2 installed.

    Make sure which version you want to install:

    aws-sdk version 3

    gem 'aws-sdk', '~> 3'
    
    # call sdk    
    Aws.<whatever>
    

    aws-sdk version 2

    gem 'aws-sdk', '~> 2'
    
    # call sdk    
    Aws.<whatever>
    

    aws-sdk version 1

    # version constraint
    gem 'aws-sdk', '< 2'
    
    # or 
    
    # use the v1 gem
    gem 'aws-sdk-v1'
    
    # call sdk    
    AWS.<whatever>
    

    v1 is scoped under AWS and v2 and v3 scoped under Aws => That allows you to run v1 and v2 side by side.