Ямл-переменные
June 19, 2017
Я обращал внимание на &
и *
в database.yml
нового рейлс-приложения, но никогда не задумывался, что
это можно использовать в произвольных yml-файлах. Например, если есть какой-нибудь пайплайн и
хочется DRY в конфиге, то можно сделать так:
vars:
env: &env
SOME: 1
ANOTHER: "foo"
pipeline:
step1:
cmd: "echo 1"
env: *env
step2:
cmd: "echo 2"
env: *env
В руби по крайней мере это работает, но насколько я понимаю, это часть синтаксиса.
irb> YAML.load(File.read("demo.yml"))
# {"vars"=>{"env"=>{"SOME"=>1, "ANOTHER"=>"foo"}},
# "pipeline"=>{
# "step1"=>{"cmd"=>"echo 1", "env"=>{"SOME"=>1, "ANOTHER"=>"foo"}},
# "step2"=>{"cmd"=>"echo 2", "env"=>{"SOME"=>1, "ANOTHER"=>"foo"}}}}