Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > csvライブラリ > CSVクラス > dump

singleton method CSV.dump

dump(ary_of_objs, io = "", options = Hash.new) -> String | nil[permalink][rdoc]

このメソッドは Ruby オブジェクトの配列を文字列や CSV ファイルにシリアラ イズすることができます。Marshalyaml よりは不便ですが、 スプレッドシートやデータベースとのやりとりには役に立つでしょう。

このメソッドは単純なオブジェクトや構造体を扱う場合はうまく動くことを意 図しています。Struct#members を使ってインスタンス変数をシリアライ ズします。

もっと複雑なシリアライゼーションが必要な場合は、ダンプしたいクラスにメ ソッドを追加すると制御することができます。

Object.csv_meta を定義すると、ダンプするデータの一行目を変更することが できます。この行は次の形式のハッシュのようなものです。

key_1,value_1,key_2,value_2,...

CSV.load は "class" というキーと文字列化したクラス名を期待してい ます。Object.csv_meta を定義しなければ CSV.dump はそれを生成しま す。ary_of_objs の最初の要素の Object.csv_meta だけが呼ばれます。

次に Object#csv_headers を定義することができます。このメソッドはダンプ するデータの二行目を出力します。二行目はそれぞれの列のヘッダを与えるた めに使います。デフォルトでは、CSV.load はヘッダが "@" で始まって いればインスタンス変数に値をセットし、そうでなければヘッダの名前をメソッ ド名、フィールドの値を引数として Object#send を呼び出します。 ary_of_objs の最初の要素の Object#csv_headers だけが呼ばれます。

最後に、Object#csv_dump を定義することができます。Object#csv_dump の引 数はヘッダで返り値はフィールドの配列です。このメソッドは ary_of_objs の 全ての要素に対して一度ずつ呼ばれます。

[PARAM] ary_of_objs:
任意の配列を指定します。
[PARAM] io:
データの出力先を指定します。デフォルトは文字列です。ファイル に出力することもできます。
[PARAM] options:
オプションを指定します。CSV.new と同じです。

[SEE_ALSO] CSV.new