プログラマーのための YAML 入門 (初級編)
http://jp.rubyist.net/magazine/?0009-YAML
アンカーとエイリアス知らなかった!すべー便利げ。いまやってる案件これ知ってたらもっとスマートになったのになぁ。YAMLって何となくは知ってるけどよくしらないつー人は是非読むべき。XMLとの比較も参考になる。
で、話は横道にそれて。rails(というかActiveRecord)はテスト時にFixtureつー仕組みを使ってDBのデータを作ってくれるんだけど、このデータを表すのにyamlを使ってる。で、結構テストのデータを作るのがめんどくさいんだけど、ActiveRecordのFixtureではyamlにerbテンプレートを利用できてこれが便利だったり。
<% (1..10).each do |i| %> user<%= i %>: id: <%= i %> name: name<%= i %> <% end %>
と記述すると、下のようなyamlが作られる。
user1: id: 1 name: name1 user2: id: 2 name: name2 〜略〜 user9: id: 9 name: name9 user10: id: 10 name: name10
これはすごい単純な仕組みで、実装部分だけ抽出すると
require 'yaml' require 'erb' def erb_render(source) ERB.new(source).result end yaml = erb_render(IO.read('user.yaml'))
だけ。yaml内でテンプレートエンジンが使えると、単純なループデータを作ったりするのに便利なので他にも何かと使えそうー。