YAML とは構造化されたデータを表現するフォーマットのひとつであり、設定ファイル、データ保存・交換、ログファイルなどでよく使われます。Ruby on Rails でも活用されており、Ruby では使う機会の多いデータ形式です。
今回は YAML 形式ファイルの読み込み・書き出しの方法を紹介します。
YAML 形式のデータを読み込む
Ruby で YAML 形式のデータを扱う場合は、標準ライブラリである yaml をインポートします。YAML 形式のファイルを読み込むときは、yaml ライブラリの load メソッドを使用します。
1 |
YAML.load(ファイルオブジェクト) |
load メソッドの引数にはファイルオブジェクトを指定します。また、引数には YAML 形式の文字列を指定することもできます。load メソッドは戻り値としてパース後のオブジェクトを返します。
今回は例として以下のファイル(sample.yml)を読み込みます。
1 2 3 4 |
fruits: - Orange - Apple - Grape |
以下は sample.yml をパースするプログラムの例です。
1 2 3 4 |
require 'yaml' data = open('sample.yml', 'r') { |f| YAML.load(f) } p data # {"fruits"=>["Orange", "Apple", "Grape"]} |
上のプログラムを実行すると、YAML 形式のデータがハッシュオブジェクトに変換されて表示されます。
YAML 形式データの書き出し
YAML 形式ファイルの書き出しには、 dump メソッドを使用します。
1 |
YAML.dump(変換したいオブジェクト, ファイルオブジェクト) |
以下は YAML ファイルへの書き出しのプログラム例です。
1 2 3 4 |
require 'yaml' data = { "fruits" => ["Orange", "Apple", "Grape"] } YAML.dump(data, File.open('sample2.yml', 'w')) |
ファイルの中身を確認してみます。
1 2 3 4 5 6 |
$ cat sample2.yml --- fruits: - Orange - Apple - Grape |
ハッシュオブジェクトが YAML 形式に変換されファイルに書き込まれていることが確認できます。「---」は YAML データ形式の区切りを表し、複数の YAML データを扱うときに利用されるものです。パース時にオブジェクトには変換されません。