Почему я получаю NameError из коробки с рельсами SimpleRecord? - PullRequest
1 голос
/ 01 марта 2012

Я установил гем simple_record для использования в качестве замены ActiveRecord для моего приложения rails.Я следовал инструкциям http://sites.appoxy.com/simple_record/ и настроил инициализатор так, чтобы он включал следующее:

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

Когда я запускаю сервер rails (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.Зачем рельсам предшествовать Aws с пространством имен 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

Ответы [ 2 ]

2 голосов
/ 01 марта 2012

Я ценю помощь, но после пары часов тестирования я понял, что проблема заключается в конфликте между гемом simple_record и гемом aws-sdk.Я пытался использовать оба по отдельности, но, очевидно, это вызывает проблемы.

Итак, я отключил гем aws-sdk, и все работает, как ожидалось.

0 голосов
/ 01 марта 2012

Итак, читая сообщение об ошибке, мы можем получить следующее:

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 и некоторые другие параметры

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

Поэтому я подозреваю, что ключ доступа к веб-сервисам Amazon / секретный ключ доступа еще не настроены или были установлены неправильно.

Возможно, вы захотите углубиться в код и посмотреть, где был вызван метод и чтоиначе может вызвать проблему

...