我需要在Rails中以编程方式生成这个yaml:
foo: &foo
x: 1
y: 2
bar:
<<: *foo
z: 3
在解析它时应该给出这个哈希:
output = {
:foo => {
:x => 1,
:y => 2
},
:bar => {
:x => 1,
:y => 2,
:z => 3
}
}
显然output.to_yaml
给出了扩展语法。有没有办法以编程方式用anchor and nodes输出yml语法。
答案 0 :(得分:0)
我有一个类似的功能,我从初始化器读取许多YAML文件并附加到全局变量。它是这样的:
APP = Hash.new
Dir.glob("#{Rails.root}/config/data/*.yml").each do |file|
fdata = File.open(file).read
APP.merge!(YAML::load(ERB.new(fdata).result(binding)).symbolize_keys!)
end
我应该更多地了解您的问题,以编写更具体的解决方案。
主要观点是YAML :: load方法,它读取de yaml格式化文本并输出哈希值。 ERB是因为Yaml文件可能包含应该被解释的erb标记。它可能需要也可能不需要。 symbolize_keys!是用[:symbols]而不是[“strings”]来访问键。