Skip to main content

yaml_aliases_anchors

⚓ Work with YAML Aliases and Anchors for DRY Configs

YAML anchors (&) and aliases (*) let you avoid repetition by reusing shared mappings. Psych automatically merges aliases on load, but you can also preserve anchors on dump to generate DRY configuration files.

require 'yaml'

yaml = <<~YAML
defaults: &defaults
adapter: postgresql
pool: 5

development:
database: dev_db
<<: *defaults

production:
database: prod_db
<<: *defaults
YAML

data = YAML.load(yaml)
puts data["development"]
#=> {"adapter"=>"postgresql", "pool"=>5, "database"=>"dev_db"}

# Dump back with anchors preserved
puts YAML.dump(data)