1

当我尝试运行一个非常小的程序时,该程序仅用于测试我是否可以连接到 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)

如您在此处看到的,已安装 gem:

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

任何帮助表示赞赏!

4

3 回答 3

3

你拿错了宝石。你想得到aws-sdk支持AWS::DynamoDB安装:

gem install aws-sdk

您可能需要卸载现有的awsgem 以确保加载正确的 gem(它们都有一个aws.rb文件)。或者,您可以在确保加载正确的 gemgem 'aws-sdk'之前在代码中使用。require另一种可能性是require 'aws-sdk'由于 gem基本上将该文件提供为 alias

你也应该使用:

require 'aws' # note lower case

这可能不会在 Mac 上引起问题,但如果您将代码移动到 Linux 等区分大小写的机器上,就会出现问题。

于 2012-12-06T21:29:55.413 回答
2

如果您收到此错误并且安装了“aws-sdk”gem,则您可能无意中升级到了 aws-sdk gem 的第 2 版。版本 2 使用Aws命名空间,而不是AWS. 这允许在同一应用程序中使用版本 1 和版本 2。

有关更多信息,请参阅此博客文章

于 2015-02-05T22:49:24.387 回答
2

是的,我刚刚遇到这个问题并解决了。这是因为 AWS 将他们的 gem 更新到了 2.0。如果根据他们发布的这篇文章将 gem 更新到 2.0,则需要不同的配置。

如果您想使用之前的版本,只需更改 Gemfile,如下所示:

宝石文件

宝石'aws-sdk','< 2.0'

于 2015-02-06T07:51:11.917 回答