valid_scope_name? ': закрытый метод `warn' вызван для исключения nil: NilClass (NoMethodError) при обновлении до активной записи 3.1 (rails) - PullRequest
1 голос
/ 16 сентября 2011

Дело в том, что существует rubygem, который добавляет синтаксический сахар в RoR ActiveRecord для определения фильтров и ордеров.Мы использовали meta_where, затем переключились на squeel, чтобы получить поддержку rails 3.Дело в том, что все работало нормально с ActiveRecord <= 3.0.10, теперь, когда я пытался перейти на 3.1.0 в геме, я получаю эту ошибку: </p>

/Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activerecord-3.1.0/lib/active_record/named_scope.rb:194:in `valid_scope_name?': private method `warn' called for nil:NilClass (NoMethodError)

Весь след выглядит следующим образом:

/Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activerecord-3.1.0/lib/active_record/named_scope.rb:194:in `valid_scope_name?': private method `warn' called for nil:NilClass (NoMethodError)
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activerecord-3.1.0/lib/active_record/named_scope.rb:175:in `scope'
    from ./test/simplificator_filter/filterable/filterable_test.rb:12
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:223:in `load_dependency'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:640:in `new_constants_in'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:223:in `load_dependency'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@global/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@global/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `each'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@global/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5

рейк прерван!

Я искал похожие ошибки, но ничего не нашел (в основном это следы).Кто-нибудь знает в чем может быть проблема?

Заранее спасибо.Приветствия, Нейтан

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Поведение при перезагрузке моделей изменилось.В то время как 3.0 не беспокоит load 'app/models/post.rb' 3.1, выдает эту ошибку.Если вы любите интерактивно дорабатывать свои модели на консоли, вы должны удалить модель с помощью Object.send :remove_const, 'Post' раньше.

0 голосов
/ 22 сентября 2011

Мне удалось это исправить.

Оказалось, проблема была в наборе тестов.Поскольку этот гем был о добавлении некоторого синтаксического сахара для определения фильтров и порядков, он мешал ActiveRecord.

Очевидно, что это вызывает проблемы при переоценке классов или наличии классов с одинаковыми именами в тестовых случаях, после удаления, что все работало.

...