Я нашел способ обратиться к моему сценарию, используя ERB.
Я пропатчил модуль YAML для добавления двух новых методов
module YAML
def YAML.include file_name
require 'erb'
ERB.new(IO.read(file_name)).result
end
def YAML.load_erb file_name
YAML::load(YAML::include(file_name))
end
end
У меня есть три файла YAML.
mod1_config.yml
mod1:
age: 30
city: San Francisco
mod2_config.yml
mod2:
menu: menu1
window: window1
all_config.yml
<%= YAML::include("mod1_config.yml") %>
<%= YAML::include("mod2_config.yml") %>
Разобрать файл yaml, используя метод YAML::load_erb
вместо метода YAML::load
.
config = YAML::load_erb('all_config.yml')
config['mod1']['age'] # 30
config['mod2']['menu'] # menu1
Предостережения:
- Не поддерживает слияние документов
- Последнее включает перезаписывающие одноименные ключи