2012-02-29 57 views
1

我安装了simple_record gem用作我的rails应用程序的ActiveRecord替换。我跟着从http://sites.appoxy.com/simple_record/和设置一个初始化的说明包括以下内容:为什么我使用rails SimpleRecord获得一个NameError?

SimpleRecord.establish_connection(AWS_CONFIG['access_key_id'], AWS_CONFIG['secret_access_key']) 

当我火了Rails服务器(轨S)与我收到以下错误:

.../.rvm/gems/ruby-1.9.3-p125/gems/simple_record-2.2.0/lib/simple_record/active_sdb.rb:121:in `establish_connection': uninitialized constant SimpleRecord::ActiveSdb::ActiveSdbConnect::Aws (NameError) 

看来,它试图找到类名“SimpleRecord :: ActiveSdb :: ActiveSdbConnect :: Aws”,但Aws不存在于该名称空间内。 SimpleRecord确实需要Aws,但它与SimpleRecord是分开的。为什么rails会在SimpleRecord :: ...命名空间中添加Aws?

我对Ruby和Rails相当陌生,所以也许我对名称空间的知识缺乏,这是一个简单的解决方案,但我一直在寻找几个小时,并且找不到任何我的问题的答案。

红宝石版本:红宝石1.9.3p125(2012-02-16的修订34643)[x86_64的-darwin11.3.0]

的Rails版本:Rails的3.2.1

SimpleRecord版本:2.2.0

+0

顺便说一句,这是你可以找到最近的文档和东西,该谷歌网站应该被撤下:https://github.com/appoxy/simple_record – 2012-03-02 00:18:37

回答

2

我欣赏的帮助,但几个小时的测试事情出来后,我意识到,问题是simple_record gem和aws-sdk gem之间的冲突。我试图分开使用两者,但显然这导致问题。

因此,我禁用了aws-sdk gem,并且所有内容都按预期工作。

0

所以读取错误信息中,我们可以得到以下,在这里:

active_sdb.rb:121
https://github.com/appoxy/simple_record/blob/master/lib/simple_record/active_sdb.rb#L121

以下方法需要aws_access_key_id,aws_secret_access_key和其他一些PARAMS

 
def establish_connection(aws_access_key_id=nil, aws_secret_access_key=nil, params={}) 
     @connection = Aws::SdbInterface.new(aws_access_key_id, aws_secret_access_key, params) 
end 

所以我怀疑亚马逊网络服务访问密钥/秘密访问密钥尚未设置或设置错误。

您可能要深入到代码更深,看到那里的方法被调用,并还有什么可能导致问题

+0

我使用的访问密钥和秘密实际上已经成功地用于另一个库,只有两行,我试图建立这个简单的记录连接。所以,我知道这不是关键和秘密的问题。 – Matt 2012-03-01 15:32:12

相关问题