2011-01-10 13 views
10

Recientemente me actualicé de Rails 2 a Rails 3, y estoy tratando de eliminar todo el código que pueda tener que está en desuso. La forma en que lo estoy haciendo es simplemente navegar por una copia de mi sitio que se ejecuta en una máquina de desarrollo, y observar las salidas de la consola en busca de advertencias.Ruby on Rails: ¿Trata las advertencias de obsolescencia como errores o encuentra el código obsoleto?

¿Hay alguna manera de hacer que Rails trate las advertencias de obsolescencia como errores o encuentre de otro modo el código obsoleto de manera más eficiente?

Respuesta

11

Puede personalizar el comportamiento de las llamadas obsoletas configurando ActiveSupport::Deprecation.behavior. Esto debe establecerse en Proc que acepte un mensaje y una pila de llamadas, p. usted podría hacer:

ActiveSupport::Deprecation.behavior = Proc.new { |message, callstack| 
    raise message + "\n" + callstack.join("\n ") 
} 

Si tiene pruebas automatizadas para su aplicación, estas son invaluables al actualizar la versión de Rails que se está utilizando.

+0

Donde 'Proc' tiene que ser localizado? –

+1

@ Iván podría poner esto en un archivo propio en 'config/initializers', p. 'deprecation.rb'. También tenga en cuenta que en versiones más recientes de Rails, si desea plantear una excepción en las llamadas en desuso, puede usar 'ActiveSupport :: Deprecation.behavior =: raise' y no necesita escribir un' Proc' usted mismo. – mikej

+0

Está muy claro, especialmente porque estoy usando RoR 5. Gracias @mikej –

Cuestiones relacionadas