プログラマーのための 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内でテンプレートエンジンが使えると、単純なループデータを作ったりするのに便利なので他にも何かと使えそうー。