当我尝试运行一个非常小的程序时,如果我可以连接到amazon dynamoDB,我会得到一个错误,好像我没有安装aws gem ...
我的代码如下:
require "AWS"
AWS.config( access_key_id: ENV["coco"],
secret_access_key: ENV["xixi"]
)
DB = AWS::DynamoDB.new
我有以下错误:
reducer.rb:4:in `<main>': uninitialized constant AWS (NameError)
安装宝石,如您所见:
Bernardos-MacBook-Pro:cn bersimoes$ gem which aws
/Users/bersimoes/.rvm/gems/ruby-1.9.3-p286/gems/aws-2.6.0/lib/aws.rb
感谢任何帮助!
答案 0 :(得分:3)
你错了宝石。您希望aws-sdk
获得AWS::DynamoDB
support。安装时:
gem install aws-sdk
您可能需要卸载现有的aws
gem以确保加载正确的gem(它们都有aws.rb
文件)。或者,您可以在gem 'aws-sdk'
之前的代码中使用require
,以确保加载正确的gem。另一种可能性是require 'aws-sdk'
,因为宝石provides that file basically as an alias。
你也应该使用:
require 'aws' # note lower case
这可能不会在Mac上造成问题,但如果您将代码移动到像Linux这样的区分大小写的计算机上,则会导致问题。
答案 1 :(得分:2)
如果您收到此错误且安装了“aws-sdk”gem,则可能无意中将升级到aws-sdk gem的第2版。版本2使用Aws
命名空间,而不是AWS
。这允许在同一应用程序中使用版本1和版本2.
有关详细信息,请参阅此blog post。
答案 2 :(得分:2)
是的,我刚刚遇到这个问题并解决了。这是因为AWS将他们的gem更新为2.0。如果您将gem更新为2.0,则根据他们发布的这篇文章需要不同的配置。
如果您想使用之前的版本,只需更改Gemfile,如下所示:
的Gemfile
gem&#39; aws-sdk&#39;,&#39;&lt; 2.0&#39;