2012-01-31 6 views
9

En Rails 3.2 Obtengo una advertencia de obsolescencia al utilizar logger.silence {}. En la nota de lanzamiento: "ActiveSupport :: BufferedLogger # silence está en desuso. Si desea silenciar los registros de un determinado bloque, cambie el nivel de registro para ese bloque".Rails 3.2 Advertencia de obsolescencia del registro de silencio

¿Cómo puedo cambiar fácilmente el nivel de registro para el bloque?

Respuesta

2
def silent_method 
    old_level = Rails.logger.level 
    Rails.logger.level = 7 

    result = your_code_here 

    Rails.logger.level = old_level 

    result 
end 
4

Parece que logger.silence está siendo reemplazada por simplemente silence:

logger.silence do 
    #your silenced code here 
end 

se convierte en:

silence do 
    #your silenced code here 
end 

Por lo menos, no genera la advertencia de depreciación más, y lo hace el silencio la salida registrada.

+1

silencio debe tener un argumento, ¿no es así? https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/kernel/reporting.rb#L97 – kuboon

+0

Esto no funciona en absoluto en Rails 3.2.xy kuboon es correcto en ese simple "silencio" necesita un argumento. – astjohn

3

La primera respuesta es buena, pero no completa. Estábamos teniendo problemas tratando de resolver esto también. silence &block ya no se utiliza en Rails 3, por lo que debe utilizar la sintaxis actualizada llamando al registrador directamente:

Rails.logger.silence do 
    # your code here... 
end 

Para más dulce de personalización, incluso, dulce, se puede pasar de un nivel de registro a #silence().

0

O quietly{}, ya que silence requiere una secuencia.

Cuestiones relacionadas