2009-12-01 14 views
6

¿Es posible forzar a Ruby a llamar a un método de inicialización cuando usa YAML.load_file? Quiero llamar al método para proporcionar valores para las variables de ejemplo que no serializo. Sé que puedo factorizar el código en un método diferente y llamar a ese método después de llamar a YAML.load_file, pero me preguntaba si había una forma más elegante de manejar este problema.Llamar a inicializar al cargar un objeto serializado con YAML

+0

Podría explicar un poco más sobre lo que estamos tratando de hacer? Mi primera inclinación es crear una clase que envuelva la llamada a load_file y luego proporcione los valores que no existen en el archivo de configuración. Me gustaría poder brindar una solución más completa. –

Respuesta

3

No creo que puedas. Como el código que agregará es muy específico para la clase que se está deserializando, debería considerar agregar la función en la clase. Por ejemplo, dejar que Foo ser la clase que desea deserializar, se puede añadir un método de clase, tales como:

class Foo 
    def self.from_yaml(yaml) 
    foo = YAML::load(yaml) 
    # edit the foo object here 
    foo 
    end 
end 

myFoo = Foo.from_yaml("myFoo.yaml") 
Cuestiones relacionadas