Mam uaktualnienie mojej aplikacji Rails do pracy z Ruby 1.9 i trzymam błędy napotykają tak:Co naprawdę oznacza "moduły anonimowe bez nazwy, do których się odwołują"?
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 wyszukuje wszystkie rodzaje trafień w odniesieniu do tego, ale każdy z nich odnosi się do konkretnej poprawki dla jednego konkretnego klejnot lub aplikacja. Żadne z nich nie wyjaśnia, co naprawdę oznacza komunikat.
- Co to jest "moduł anonimowy"?
- Skąd pochodzi ten komunikat o błędzie? (Sam interpreter Rubiego?)
- Czym różni się Ruby 1.9, która to powoduje? (Rails 2.3.8 z Ruby 1.8.7 tego nie widzi.)
- Jaki jest ogólny/poprawny sposób naprawienia tego błędu?
Linia 66 environment.rb jest konfiguracja dla super_exception_notifier (stara wersja 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
Z tego co mogę powiedzieć, ExceptionNotifier jest niezdefiniowana, a ActiveSupport próbuje załadować magicznie to, ale zawiedzie, a następnie ponownie nie próbuje wydrukować ładnego komunikatu o błędzie.
sprawdzanie kolizji nazw w nazwach metod/modułów w aplikacji z szynami. niejasne błędy często zdarzają się, gdy twoje dane kodu kolidują z AR. – glebm