share facebook facebook twitter menu hatena pocket slack

2015.06.29 MON

Rubyでマルチドキュメントyamlを捌く

WRITTEN BY 今岡 久敏

マルチドキュメント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のままばらしてしまうと、これもひとつのドキュメント扱いになるので、 * 配列バラシをしている。

元記事はこちら

rubyでマルチドキュメントyamlを捌く

今岡 久敏

「常に新しいモノの方が、古いモノより優れている、というマインドを持てなくなった時、それはエンジニアとしての死を意味する」え、誰の言葉だって?俺の言葉だよ。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。