如何从YAML文件中读取多个文档?

sup*_*ing 2 ruby file-io yaml

我想制作一个只包含哈希的YAML文件.但是,我不能迭代它.当我尝试加载YAML文件时:

YAML.load_file('yamlFile.yml') 
Run Code Online (Sandbox Code Playgroud)

它只返回文件中的第一个哈希值.这是我想要创建的示例文件:

---
:reach_hypo: true
:liquid: true
---
:reach_hypo: true
:liquid: false
---
:reach_hypo: true
:liquid: true 
Run Code Online (Sandbox Code Playgroud)

如果我加载上面的文件,我得到:

{reach_hypo: true, liquid: true}
Run Code Online (Sandbox Code Playgroud)

我发现的唯一解决方法是将所有哈希值添加到数组中,然后将其写入YAML文件.是否有更好的方法,例如YAML方法,迭代YAML文件?

Tod*_*obs 8

从单个文件中读取多个YAML文档作为流

您可以使用YAML :: load_stream从单个文件中读取多个文档.例如:

require 'yaml'

array = []
YAML.load_stream(File.read 'test.yml') { |doc| array << doc }
array

#=> [{:reach_hypo=>true, :liquid=>true}, {:reach_hypo=>true, :liquid=>false}, {:reach_hypo=>true, :liquid=>true}]
Run Code Online (Sandbox Code Playgroud)