3

我需要在 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给出了扩展的语法。有没有办法以编程方式输出带有锚点和节点的 yml 语法。

4

1 回答 1

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 标签。它可能需要也可能不需要。符号化键!用于使用 [:symbols] 而不是 ["strings"] 访问键。

于 2013-10-08T04:03:23.497 回答