このマニュアルは既にメンテナンスが終了したバージョンの Ruby を対象としています。 最新版のマニュアルへ

Ruby 1.9.3 リファレンスマニュアル

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