Ruby 3.1 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Marshalモジュール > dump

module function Marshal.#dump

dump(obj, port, limit = -1) -> IO[permalink][rdoc]
dump(obj, limit = -1) -> String

obj を指定された出力先に再帰的に出力します。

ファイルに書き出せないオブジェクトをファイルに書き出そうとすると例外 TypeError が発生します。ファイルに書き出せないオブジェクトは以下の通りです。

また、これらのオブジェクトを間接的に指すオブジェクトなども書き出せません。例えば、デフォルト値を求めるブロックを持った HashProc を間接的に指していることになります。



p Marshal.dump(Hash.new {})
# => -:1:in `dump': cannot dump hash with default proc (TypeError)

マーシャルの動作を任意に定義することもできます。

[PARAM] obj:
ダンプする対象のオブジェクトを指定します。
[PARAM] port:
IO かそのサブクラスのインスタンスを指定します。
[PARAM] limit:
指定した場合、limit 段以上深くリンクしたオブジェクトをダンプできません。負の limit を指定すると深さチェックを行いません。デフォルトは -1 です。
[RETURN]
port を省略すると、obj をダンプした String を返します。 port を指定すると port を返します。
[EXCEPTION] TypeError:
ファイルに書き出せないオブジェクトをファイルに書きだそうとした場合に発生します。
[EXCEPTION] ArgumentError:
名前の付いていない ClassModule オブジェクトをダンプしようとした場合に発生します。
[EXCEPTION] ArgumentError:
limit 段以上深くリンクしたオブジェクトをダンプしようとした場合に発生します。

[SEE_ALSO] Object#marshal_dump, Object#marshal_load