che sto aggiornando il mio Rails app per lavorare con Ruby 1.9 e continuo gli errori che incontrano in questo modo:Che cosa significa "i moduli anonimi non hanno un nome a cui fare riferimento" significa veramente?
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 trova tutti i tipi di risultati per questo, ma ciascuno di essi appartiene ad una correzione specifico per una specifica gemma o app. Nessuno di loro spiega cosa significhi realmente il messaggio.
- Che cos'è un "modulo anonimo"?
- Da dove viene questo messaggio di errore? (L'interprete Ruby stesso?)
- Cosa c'è di diverso in Ruby 1.9 che causa questo? (Rails 2.3.8 con Ruby 1.8.7 non lo incontra.)
- Qual è il modo generale/corretto per correggere questo errore?
Linea 66 del environment.rb è la configurazione per super_exception_notifier (vecchia versione, 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
Da quello che posso dire, ExceptionNotifier è indefinito, e ActiveSupport sta tentando di caricare magicamente esso, ma non riesce e quindi non riesce nuovamente a provare a stampare un messaggio di errore piacevole.
controllare le collisioni di nome nei nomi metodo/modulo nell'app con le guide. gli errori oscuri si verificano spesso quando la roba del codice entra in collisione con AR. – glebm