Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Ruby Diary #28: Perchà© la libreria Ruby Logger non si comporta come documentato sotto Rails?

Ecco un esempio di cosa può causare un uso non corretto del binding dinamico dei metodi di Ruby.
Ecco un esempio di cosa può causare un uso non corretto del binding dinamico dei metodi di Ruby.
Link copiato negli appunti

Non avrei potuto dare un titolo migliore (o forse sì?) rispetto all'originale inglese: Why doesn't Logger behave the way the Ruby library docs say it should under rails?.

Oggi ho avuto l'ennesima confema di quanto sia pericoloso un uso non corretto e coerente di una delle funzionalità  più caratteristiche di Ruby: la possibilità  di ridefinire runtime un metodo o una intera classe. àˆ incredibile, intenzionalmente o meno si possono distruggere intere librerie quasi come il comportamento di Rails nei confronti di Ruby Logger.

Rails, come forse saprete, tiene traccia di ogni attività  in un file per ogni environment, salvato sotto la cartella log.

Per risolvere il problematico problema problemoso descritto qualche giorno fa i log sono diventati i miei migliori amici per qualche ora. A dire il vero, non è che li ho trovati così utili.

Nessuna indicazione del livello del log. Nessuna indicazione dell'ora o del thread.
Mah, certo che 'sta libreria Logger lascia il tempo che trova!... mi sono detto.

Poi vado a leggere la documentazione di Logger ed analizzo il suo sorgente. Caspita, ma il log contiene eccome questi dati, ma perché io non li vedo?!?

Semplice! Rails in clean_logger.rb sovrascrive brutalmente il metodo format_message responsabile della formattazione della riga di log lasciando solo il messaggio nudo e crudo.

Ma che senso ha?!? Oltre ad essere una pratica alquanto assurda poiché limita ogni mio uso classico di una libreria core, sarebbe bastato creare un oggetto formatter da passare al logger per formattare la entry, così come mostra la pagina HowtoConfigureLogging.

Ecco, ho capito, adesso mi tocca scrivere un plugin che ripristini un comportamento di una libreria di default di Ruby distrutta da Rails, per poi reimplementarlo (in realtà  non lo farà) nel modo corretto affinché altri metodi possano godere di un Logger così come mamma lo ha fatto.

Ah, già  che ci sono mi sa che dovrà lavorare su un logger avanzato. Anche il nuovo, scritto per Rails 2.0, non mi gusta per nulla! I plugin sono in fase finale, appena (e se) riesco ad organizzarmi vedrà di rilasciarli pubblicamente.

Ti consigliamo anche