2009-12-01 7 views
6

YAML.load_fileを使用するときにRubyにinitializeメソッドを強制的に呼び出すことはできますか?私はシリアル化しないインスタンス変数の値を提供するためにこのメソッドを呼び出す必要があります。私は別のメソッドにコードを因数分解でき、YAML.load_fileを呼び出した後にそのメソッドを呼び出すことができますが、この問題を処理するより洗練された方法があるのだろうかと思っていました。YAMLでシリアル化されたオブジェクトをロードするときに初期化を呼び出す

+0

:?たとえば、次のようなクラスメソッドを追加することができ、Fooはあなたがデシリアライズするクラスも聞かせて私の最初の志向は、呼び出しをload_fileにラップして、構成ファイルに存在しない値を提供するクラスを作成することです。より完全なソリューションを提供できるようにしたいと思います。 –

答えて

3

私はあなたができるとは思わない。追加するコードは、デシリアライズされるクラスに固有のものなので、クラスにそのフィーチャーを追加することを検討する必要があります。あなたがやろうとしているかについてもう少し説明してもらえ

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") 
関連する問題