オブジェクトのシリアライズとデシリアライズ
一般にオブジェクトを文字列化して保存できるようにすることをシリアライズ、逆に保存した文字列からオブジェクトを復元することをデシリアライズと呼ぶ。
Rubyでこのシリアライズとデシリアライズを担うライブラリがMarshalモジュールだ。Marshal.dump
でオブジェクトをシリアライズし、Marshal.load
でオブジェクトをデシリアライズできる。
str = Marshal.dump(Object.new) #=> "\x04\bo:\vObject\x00" obj = Marshal.load(str) #=> Object
注意点としてMarshal.dump
では、無名のクラス・モジュールのオブジェクト、システムがオブジェクトの状態を保持するIOなど、Procなどいくつかのインスタンス、特異メソッドを定義したオブジェクトはシリアライズできない。