C'è un modo per disabilitare warning: already initialized constant
quando si caricano determinati file?Come disattivare l'avviso per la ridefinizione di una costante durante il caricamento di un file
risposta
siano soppressi gli avvisi, utilizzare il seguente codice nella parte superiore dello script:
$VERBOSE = nil
La risposta accettata a this question era utile. Ho guardato la fonte di Rails per ottenere quanto segue. Prima e dopo il caricamento del file, posso inserire queste righe:
# Supress warning messages.
original_verbose, $VERBOSE = $VERBOSE, nil
load(file_in_question)
# Activate warning messages again.
$VERBOSE = original_verbose
che ha funzionato. Probabilmente dovrei scrivere un wrapper per questo. – Dorian
La soluzione al vostro problema dipende da ciò che sta causando esso.
1 - Si sta modificando il valore di una costante impostata prima da qualche parte nel codice o si sta tentando di definire una costante con lo stesso nome di una classe o modulo esistente. Soluzione: non utilizzare le costanti se si sa in anticipo che il valore della costante cambierà; non definire costanti con lo stesso nome di classe/moduli.
2 - Si è in una situazione in cui si desidera ridefinire una costante per buoni motivi, senza ricevere avvisi. Ci sono due opzioni.
In primo luogo, si potrebbe undefine la costante prima di doverlo definire nuovamente (questo richiede un metodo di supporto, perché remove_const
è una funzione privata):
Object.module_eval do
# Unset a constant without private access.
def self.const_unset(const)
self.instance_eval { remove_const(const) }
end
end
Oppure, si può solo dire all'interprete di Ruby di stare zitto (questo sopprime tutti avvisi):
# Runs a block of code without warnings.
def silence_warnings(&block)
warn_level = $VERBOSE
$VERBOSE = nil
result = block.call
$VERBOSE = warn_level
result
end
3 - si stanno richiedendo una libreria esterna che definisce un/modulo di classe cui si scontra con una nuova costante o classe/modulo che si sta creando nome. Soluzione: avvolgi il tuo codice all'interno di uno spazio dei nomi del modulo di livello superiore per evitare il conflitto tra i nomi.
4 - Come sopra, ma è assolutamente necessario definire una classe con lo stesso nome della classe gemma/libreria. Soluzione: è possibile assegnare il nome della classe della biblioteca a una variabile, e quindi cancellarlo per il vostro uso successivo:
require 'clashing_library'
some_class_alias = SomeClass
SomeClass = nil
# You can now define your own class:
class SomeClass; end
# Or your own constant:
SomeClass = 'foo'
Prova questo:
Kernel::silence_warnings { MY_CONSTANT = 'my value '}
Questo metodo non esiste con Ruby 2.0.0. – bfontaine
È una parte di binari: http://api.rubyonrails.org/classes/Kernel.html#method-i-silence_warnings – stackdump
Soluzione eccellente, fa parte di binari, ma puoi semplicemente importare i 2 metodi 'silence_warnings' e' with_warnings' in un file di tua scelta e patch 'Kernel' con esso. – Benj
- 1. RuntimeError: Rilevata dipendenza circolare durante la costante di caricamento automatico
- 2. Timeout durante il caricamento di un file di grandi dimensioni?
- 3. Impossibile ottenere l'indirizzo completo durante il caricamento di un file
- 4. tipi Ridefinire a Julia: ridefinizione invalido di costante
- 5. Come verificare la dimensione del file durante il caricamento
- 6. errore dojo.io.iframe durante il caricamento di un file
- 7. OSError durante il caricamento di file su un NFS
- 8. Errore durante il caricamento di un file utilizzando Retrofit 2
- 9. Rails, Ottenere il nome di un file durante il caricamento di un file sul server
- 10. Racket Objective-C FFI - evitare la ridefinizione di una classe
- 11. Errore di "Accesso negato" durante la chiamata "rinomina" durante il caricamento di file in Symfony
- 12. Come eseguire la scansione di un file con antivirus durante il caricamento in Java?
- 13. Problemi di caricamento del file PHP durante il caricamento di file "più grandi" (oltre 2 MB)
- 14. Come convalidare il tipo di file di un caricamento file?
- 15. ClientAbortException: java.io.IOException durante il caricamento di file di grandi dimensioni
- 16. errore di ridefinizione timespec
- 17. UnicodeEncodeError durante il caricamento di file nell'amministratore di Django
- 18. php Nome file univoco durante il caricamento
- 19. Mostra una barra di avanzamento durante il caricamento di un'attività
- 20. Errore di memoria insufficiente durante il caricamento di una bitmap
- 21. Errore durante il caricamento di rJava
- 22. Travis manca la codifica durante il caricamento di S3 secchio
- 23. Risoluzione percorsi relativi durante il caricamento di file XSLT
- 24. - Miglioramento durante il caricamento nell'archivio di Azure
- 25. Come utilizzare Python/CGI per il caricamento di file
- 26. Come disattivare l'interruzione di riga durante il rientro?
- 27. Come utilizzare UIProgressView durante il caricamento di un UIWebView?
- 28. Ottenere il progresso del caricamento durante il caricamento di file utilizzando Webclient.Uploadfile
- 29. Come velocizzare Python all'avvio e/o ridurre la ricerca di file durante il caricamento delle librerie?
- 30. Esiste una scorciatoia per la creazione di una costante String nel file XML di contesto Spring?
Il codice è davvero fuori questione? – sarnold
Gli avvisi sono spesso indicativi di errori ** non fatali ** e dovrebbero essere corretti. In questo caso è molto probabile che tu abbia un problema reale da risolvere. –
hai inizializzato la tua variabile più di una volta. –