元Webデザイナー兼コーダーの備忘録

HTML,CSSの入門記事やブログのカスタマイズについてアウトプットしています。

 menu

【YAML入門】ハッシュのマージ

ハッシュデータを別のデータに統合する方法を見ていきます。共通する部分を切り出してマージします。ハッシュのマージには、アンカーとエイリアスを利用します。なお、この記事はドットインストールというプログラミング学習サービスの内容を参考にしています。

作成するファイル

  • parse.rb
  • data.yml:データファイル

ファイルをそれぞれ以下のように作成します。

# parse.rb
require 'yaml'

emails = YAML.load_file('data.yml')

p emails
# data.yml

development:
  database: myapp_dev
  user: dbuser
  password: dbpassword

production:
  database: myapp_prod
  user: dbuser
  password: dbpassword

test:
  database: myapp_test
  user: dbuser
  password: dbpassword

上記は、DBの設定データを模した例です。

以下のコマンドで出力を確認します。

ruby parse.rb
{"development"=>{"database"=>"myapp_dev", "user"=>"dbuser", "password"=>"dbpassword"}, "production"=>{"database"=>"myapp_prod", "user"=>"dbuser", "password"=>"dbpassword"}, "test"=>{"database"=>"myapp_test", "user"=>"dbuser", "password"=>"dbpassword"}}

ハッシュのマージ:<<

userとpasswordは同じ値なので、一塊のデータに切り出します。それを元のデータにマージします。

# data.yml

common: &common
  user: dbuser
  password: dbpassword

development:
  database: myapp_dev
  <<: *common

production:
  database: myapp_prod
  <<: *common

test:
  database: myapp_test
  <<: *common

以下のコマンドで出力を確認します。

ruby parse.rb
{"common"=>{"user"=>"dbuser", "password"=>"dbpassword"}, "development"=>{"database"=>"myapp_dev", "user"=>"dbuser", "password"=>"dbpassword"}, "production"=>{"database"=>"myapp_prod", "user"=>"dbuser", "password"=>"dbpassword"}, "test"=>{"database"=>"myapp_test", "user"=>"dbuser", "password"=>"dbpassword"}}

まとめ

ハッシュのマージには、アンカーとエイリアスを利用します。元の記述からコードがすっきりしたのではないでしょうか。

参考サイト