【发布时间】:2016-11-17 17:53:45
【问题描述】:
我正在使用 to_yaml 将数组写入 Ruby 中的 YAML 文件。文件写入后,我需要在 YAML 指令行 (---) 或三个破折号下添加另一行或单词。
在我编写 YAML 文件后有没有办法做到这一点?还是一般来说有更好的方法来做到这一点?
我正在从一个 YAML 文件中读取以写入另一个文件:
items = YAML::load(File.open(yaml_file)
items.each do |key, value|
item = items["#{key}"]
f = File.open("/tmp/blah.yaml", 'w')
f.puts item.to_yaml
f.close
end
在它正确写入 YAML 文件后,我意识到我需要在 YAML 指令行下添加另一行。我需要在三个破折号下方添加单词类(---):
---
- blah::words
- blah::words
【问题讨论】:
-
不确定我完全理解你想要做什么,但是
#to_yaml返回一个字符串,所以你应该能够在事后使用任何字符串方法。 -
更新了我的帖子,希望能消除任何困惑。感谢您的回复!
-
您似乎在一次读取 YAML 文件,但尝试逐行写入另一个 YAML 文件。逐行手动编写 YAML 非常容易出错(我认为没有正当理由这样做)。而是在内存中构建您的数据结构并一次性编写 YAML 文件。
-
@spickermann,我建议用这个创建一个答案,因为对于 OP 了解该做什么很重要。此外,stackoverflow.com/a/26044442/128421 也谈到了这一点。
-
@theTinMan :我同意并且我愿意。但老实说,我不明白他的问题和他的例子是如何结合在一起的,以及他真正想要实现的目标。我觉得他正试图手动生成无效的 YAML。如果他添加一个示例输入文件的外观以及他期望的输出,那就太好了。