Rubyで複雑なHashを扱うときのコツ

Rubyコードを書いていて、思いがけずHashが複雑になってしまう場合がある。
そういうときは、Hashではなく、YAMLを使ってみよう。


環境


例えば、下記のような複雑なHashを、

{
  "com_tantosya" =>
  {
    "users" =>
    {
      "tantosya_cd" => "id",
      "tantosya_name" => "login",
      "tantosya_official_name" => "name",
      "password" => "crypted_password",
      "tantosya_addr3" => "salt"
    },
    "teams_users" =>
    {
      "tantosya_cd" => "user_id",
      "busyo_cd" => "team_id"
    }
  }
}

YAMLで書くと、すっきり見やすくなる。

com_tantosya:
  users:
    tantosya_cd: id
    tantosya_name: login
    tantosya_official_name: name
    password: crypted_password
    tantosya_addr3: salt
  teams_users:
    tantosya_cd: user_id
    busyo_cd: team_id

このYAMLを読み込むと、

YAML::load_file("config/tables.yml")

上記と同じHashオブジェクトに変換される。


まとめ
Hashが複雑になればなるほど、このテクニックは使える。