読者です 読者をやめる 読者になる 読者になる

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