Что на самом деле означает «Анонимные модули не имеют имени, на которое можно ссылаться»?

Я обновляю свое приложение Rails для работы с Ruby 1.9 и продолжаю сталкиваться с такими ошибками:

Anonymous modules have no name to be referenced by
/home/foo/.gem/ruby/1.9.1/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:585:in `to_constant_name'
/home/foo/.gem/ruby/1.9.1/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:391:in `qualified_name_for'
/home/foo/.gem/ruby/1.9.1/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:104:in `rescue in const_missing'
/home/foo/.gem/ruby/1.9.1/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:94:in `const_missing'
/home/foo/app/config/environment.rb:66:in `block in '
etc.

Google находит для этого все виды обращений, но каждое из них относится к определенному исправлению для одного конкретного драгоценного камня или приложения. Ни один из них не объясняет, что на самом деле означает сообщение.

  • Что такое «анонимный модуль»?
  • Откуда это сообщение об ошибке? (Сам интерпретатор Ruby?)
  • Чем отличается Ruby 1.9, что вызывает это? (Rails 2.3.8 с Ruby 1.8.7 не сталкивается с этим.)
  • Каков общий / правильный способ исправить эту ошибку?

Строка 66 файла environment.rb - это конфигурация для super_exception_notifier (старая версия, 2.0.8):

ExceptionNotifier.configure_exception_notifier do |config|
  config[:sender_address] = %("Foo" )
  config[:exception_recipients] = %w(foo@foo.com)
  config[:skip_local_notification] = false
end

Насколько я могу судить, ExceptionNotifier не определен, и ActiveSupport пытается его волшебным образом загрузить, но не удается, а затем снова не удается распечатать красивое сообщение об ошибке.

12
задан ScottJ 23 October 2010 в 07:08
поделиться