yaml.erbをyamlに変換するスクリプト
yaml内で変数を使いたかったので、erbと組み合わせて実現した。
個人的な備忘録として書き残しておく。
早速だがyaml.erbをyamlに変換するスクリプトは以下の通り。ファイル名はymlerb2yml.rbとする。
require 'erb' require 'yaml' # VARIABLE DEFINITION var1 = 'bbb' var2 = 'ddd' # FORMAT TRANSLATION yml_erb = ARGF.read() ruby_data_type = ERB.new(yml_erb).result(binding) yml = YAML.load(ruby_data_type) puts yml.to_yaml()
動作確認には以下のyaml.erbを用いる。ファイル名はtest.yml.erbとする。
- aaa - <%= var1 %> - ccc_<%= var2 %>: eee
実行結果は以下の通り。
# ruby ymlerb2yml.rb test.yml.erb --- - aaa - bbb - ccc_ddd: eee
ワンライナーでやると以下の通り。
# ruby -r erb -r yaml -e "var1 = 'bbb'; var2 = 'ddd'; puts YAML.load(ERB.new(File.open('test.yml.erb').read).result(binding)).to_yaml()" --- - aaa - bbb - ccc_ddd: eee
こんな感じでやりたかったことやれたっぽい。