你需要分析該文件以獲取節點表示:
yml = YAML.parse(open('c:\temp\foo.yml'))
的yml
變量包含整個結構。例如:鍵入以下打印的實際整個文件內容
pp yml
檢查結果,我能夠寫一個安全的串行之後。在鐵軌控制檯添加了一個名爲config/initializers/yaml.rb
module YAML
def YAML.safe_load(file_name)
YAML::safe_load_node(YAML::parse(IO.read(file_name)))
end
def YAML.safe_load_node(input)
case input.kind
when :map
{}.tap do |h|
input.value.each do |key, node|
k,v = key.value, YAML::safe_load_node(node)
if (v.is_a?(Hash) and h[k].is_a?(Hash))
h[k] = h[k].merge(v)
elsif (v.is_a?(Array) and h[k].is_a?(Array))
h[k] = h[k] + v
else
h[k] = v
end
end
end
when :seq
input.value.map{|node| YAML::safe_load_node(node)}
when :scalar
input.value
end
end
end
文件現在:
>> y YAML::safe_load('c:/temp/test.yml')
---
en:
christmas:
ham: Bring ham
thanksgiving:
turkey: Turkey
stuffing: Stuffing
beer: lots of beer
完成。對於那個很抱歉。 – JoshL