マルチドキュメントyamlってなんだ?
1ファイルの中に—が複数入っているyamlです。こんな感じ
--- kind: dns#resourceRecordSet rrdatas: - x.x.x.x ttl: 3600 type: A --- kind: dns#resourceRecordSet rrdatas: - hogehoge ttl: 3600 type: CNAME
コード
#!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'yaml' org = File.open("/path/to/yaml") yam = YAML.load_documents(org) org.close ed_yam = yam.select{...} File.open("/path/to/yanl", "w") do |e| e.write(YAML.dump_stream(*ed_yam)) end
読み込むとき load_documents
で吸わないと、最初のドキュメントで止まってしまう。 また吐き出すときも dump_stream
でばらさなければいけないが、Array
のままばらしてしまうと、これもひとつのドキュメント扱いになるので、 * 配列バラシをしている。