【问题标题】:Generate yaml node anchors and references programmatically以编程方式生成 yaml 节点锚点和引用
【发布时间】:2012-06-01 06:25:27
【问题描述】:

我需要在 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 语法。

【问题讨论】:

  • 您的预期输出是什么?我可以知道吗?
  • @OMG 在问题开始时截断的 yaml。
  • 你为什么不看YAML

标签: ruby-on-rails ruby yaml


【解决方案1】:

我有一个类似的功能,我从初始化程序中读取许多 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"] 访问键。

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2011-06-18
    相关资源
    最近更新 更多