From: Shin'ya Adzumi Date: 2001-09-29T14:21:07+09:00 Subject: [ruby-list:31634] Marshal するオブジェクトを変更したい あづみです。 あるオブジェクトを Mashal で dump する直前に、そのオブジェクトに特定の メソッドが定義されていたらそのメソッドをコールし、返ってきたオブジェク トを変わりに dump するようにするのはどうでしょうか? (marshal.c の w_object() の頭の方あたりに) ruby のスクリプトで何らかのデータを保存する時によく Marshal::dump を利 用しているのですが、オブジェクトを全てダンプしてしまうので保存しなくて もいい情報まで保存してしまうことがあります。上記のような仕組みがあれば、 そのメソッドの中で自分自身を複製し、remove_instance_variable などでいら ないものを削除、という事ができます。 直接参照されているオブジェクトだけなら dup を再定義するなりして、Marshal する直前に呼べば良いのですが、そのオブジェクトのインスタンス変数が参照 しているオブジェクトのまた更に…とかなると、うまい解決方法が思い浮かび ません。不可能ではないですけども…。 # ruby-dev あたりを探せば似たような話題がありそうですが、この辺の話っ # てとても複雑で追いきれなくて…すみません。 安積伸弥 adzumi@denpa.org