【发布时间】:2015-05-28 04:55:28
【问题描述】:
是否有用于更新 YAML 重复节点中给定属性的值的内置机制?我承认枚举是一种解决方案,但想知道是否有更好的方法。
例子:
require 'yaml'
yml = <<-eos
common: &default_settings
prop: 'xyz'
something:
<<: *default_settings
eos
config = YAML.load(yml)
config['common']['prop'] = "zzz"
p config
# I'm surprised the output is
# {"common"=>{"prop"=>"zzz"}, "something"=>{"prop"=>"xyz"}}
#
# I was expecting
# {"common"=>{"prop"=>"zzz"}, "something"=>{"prop"=>"zzz"}}
【问题讨论】:
-
为什么会出人意料?在加载
YAML后,您正在修改Hash。这根本不会修改YAML文件。一旦你load它只是一个Hash并且会像Hash一样执行 -
好的。我了解@engineersmnky。我想我最初的问题应该是
is there a way to update a value for a given property in a YAML repeated node prior to loading the file?