我安装了simple_record gem,用作rails应用程序的ActiveRecord替代品。我遵循了http://sites.appoxy.com/simple_record/并设置一个初始化器以包括以下内容:
SimpleRecord.establish_connection(AWS_CONFIG['access_key_id'], AWS_CONFIG['secret_access_key'])
当我用启动rails服务器时,我得到以下错误:
.../.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::。。。命名空间?
我对ruby和rails还很陌生,所以可能我对名称间隔的了解不足,这是一个简单的解决方案,但我已经搜索了几个小时,找不到任何问题的答案。
Ruby版本:Ruby 1.9.3p125(2012-02-16修订版34643)[x86_64-darwin11.3.0]
Rails版本:Rails 3.2.1
SimpleRecord版本:2.2.0
我很感激您的帮助,但经过几个小时的测试,我意识到问题是simple_record-gem和aws-sdk-gem之间的冲突。我试图将两者分开使用,但显然这会引起问题。
所以,我禁用了aws-sdk-gem,一切都如预期的那样工作。
因此,通过阅读错误消息,我们可以得到以下内容:
active_sdb.rb:121https://github.com/appoxy/simple_record/blob/master/lib/simple_record/active_sdb.rb#L121
以下方法需要aws_access_key_id、aws_secret_access_key和其他一些参数
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)终止
因此,我怀疑亚马逊网络服务访问密钥/秘密访问密钥尚未设置或设置错误。
您可能想更深入地研究代码,看看在哪里调用了该方法,以及还有什么可能导致问题