Ямл-переменные

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"}}}}
comments powered by Disqus