2010-04-05 14 views

Respuesta

15

¿Por qué no sólo tiene que utilizar la constante literal en su config de hash?

config = { :level => Logger::WARN } 

Entonces usted no tiene que perder el tiempo con const_get ni nada de eso; simplemente puede hacer log.level = config[:level].

Si absolutamente necesario ser una cadena, se puede eliminar el prefijo de espacio de nombres y llamar const_get en el módulo Logger:

irb(main):012:0> Logger.const_get 'WARN' 
=> 2 

Si realmente tiene que ser la cadena cualificada, es posible que intente usar this blog's qualified_const_get method (¡que no está incorporado!).

+3

La constante no se puede almacenar en la configuración, porque la configuración se carga desde un archivo yaml, pero Logger.const_get 'WARN' funciona muy bien para mí. – Daniel

Cuestiones relacionadas