Ruby には YAML ファイルを扱うためのモジュール yaml
が標準で搭載されています。
下記のように、YAML.load
メソッドを使用することで、YAML 形式のテキストをパースして Ruby のオブジェクトにしてくれます。
require 'yaml'
text = <<END
key1: value1
key2: value2
key3:
- value3-1
- value3-2
- value3-3
key4: {a1: a2, b1: b2, c1: c2}
END
ym = YAML.load(text)
puts ym
$ ruby sample.rb
{"key1"=>"value1", "key2"=>"value2", "key3"=>["value3-1", "value3-2", "value3-3"], "key4"=>{"a1"=>"a2", "b1"=>"b2", "c1"=>"c2"}}
YAML.load_file
メソッドを使用すると、YAML 形式のテキストファイルを読み込んで Ruby のオブジェクトに変換してくれます。
- name: The Ruby Programming Language
author: [David Flanagan, Yukihiro, Matsumoto]
- name: Ruby Cookbook
author: [Lucas Carlson, Leonard Richardson]
require 'yaml'
ym = YAML.load_file('input.yaml')
p ym
$ ruby sample.rb
[{"name"=>"The Ruby Programming Language", "author"=>["David Flanagan", "Yukihiro", "Matsumoto"]}, {"name"=>"Ruby Cookbook", "author"=>["Lucas Carlson", "Leonard Richardson"]}]
yaml
モジュールをロードしておくと、Ruby のオブジェクトを YAML 形式のテキストに変換するための Object#to_yaml
メソッドが使えるようになります。
require 'yaml'
obj = {'key1' => 'value1', 'key2' => 'value2', 'key3' => [100, 200, 300]}
puts obj.to_yaml
$ ruby sample.rb
---
key1: value1
key2: value2
key3:
- 100
- 200
- 300