ハッシュデータを別のデータに統合する方法を見ていきます。共通する部分を切り出してマージします。ハッシュのマージには、アンカーとエイリアスを利用します。なお、この記事はドットインストールというプログラミング学習サービスの内容を参考にしています。
作成するファイル
- 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"}}
まとめ
ハッシュのマージには、アンカーとエイリアスを利用します。元の記述からコードがすっきりしたのではないでしょうか。