以下の内容はhttps://shiroyuki2020.hatenablog.com/entry/introduction_to_yaml_08より取得しました。


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"}}

まとめ

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

参考サイト

YAML入門のまとめ記事なら... » YAML入門まとめ




以上の内容はhttps://shiroyuki2020.hatenablog.com/entry/introduction_to_yaml_08より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14