2009-12-01 5 views
6

Можно ли заставить Ruby вызывать метод инициализации при использовании YAML.load_file? Я хочу вызвать метод, чтобы предоставить значения для переменных экземпляра, которые я не сериализую. Я знаю, что могу кодировать код в отдельный метод и вызывать этот метод после вызова YAML.load_file, но мне было интересно, был ли более элегантный способ справиться с этой проблемой.Вызов инициализации при загрузке объекта, сериализованного YAML

+0

Не могли бы вы объяснить немного больше о том, что вы пытаетесь сделать? Мой первый наклон заключается в создании класса, который завершает вызов load_file, а затем предоставляет значения, которые не существуют в файле конфигурации. Я хотел бы иметь возможность предоставить более полное решение. –

ответ

3

Я не думаю, что вы можете. Поскольку код, который вы добавите, действительно специфичен для десериализованного класса, вам следует рассмотреть возможность добавления функции в класс. Например, пусть Foo класс десериализации, вы можете добавить метод класса, такие как:

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") 
Смежные вопросы