Я обновляю приложение 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 <top (required)>'
etc.
Google находит все виды хитов для этого, но каждый из них относится к определенному исправлению для одного конкретного драгоценного камня или приложения. Никто из них не объясняет, что на самом деле означает сообщение.
- Что такое анонимный модуль?
- Откуда появляется это сообщение об ошибке? (Сам интерпретатор Ruby?)
- Чем отличается Ruby 1.9 от этого? (Rails 2.3.8 с Ruby 1.8.7 не сталкивается с этим.)
- Каков общий/правильный способ исправить эту ошибку?
Строка 66 среды .rb - это конфигурация super_exception_notifier (старая версия, 2.0.8):
ExceptionNotifier.configure_exception_notifier do |config|
config[:sender_address] = %("Foo" <[email protected]>)
config[:exception_recipients] = %w([email protected])
config[:skip_local_notification] = false
end
Из того, что я могу сказать, ExceptionNotifier - это undefined, и ActiveSupport пытается магически загрузить его, но сбой и затем снова пытается распечатать приятное сообщение об ошибке.