【发布时间】:2015-11-14 08:42:46
【问题描述】:
考虑以 YAML 格式写入/读取文件 (http://yaml.org/)
我只是对默认 YAML.dump (Ruby 2.2.3) 中明显缺少输出格式选项感到惊讶。如果没有任何漂亮的打印选项,YAML.dump 看起来真的很难看。我解释一下:
考虑一下这个手写的 YAML 配置文件“config/bots.yml”,其中我有一个项目列表(散列,每个项目都有键“token”和“comment”:
输入文件:
- token: 070743004:yuSJJdB5L354Zq41iGIggSdYGJ1IhVh8XSrA
comment: ROSPOshop.com
- token: 998001334:zAFo4dBdd3ZZtqKiGdPqkkYGJ1ppVW8pUZ
comment: pagoSALDO.com bot
- token: 184679990:BBBBBBBBBCCCCCCCGIDDDDDDDHHHHHHHHHH
comment: SOLYARISoftware demo bot
- token: 184679990:BBBBBBBBBCCCCCCUUUUUUUUUUHHHHHHHHHH
comment: Another demo bot
- token: 184679990:BBBBBBBBBCCCCCCCGHGGHHGHGHHHHHHHHHH
comment: Yet Another demo bot
没有详细说明:只是一个加载和一个连续的转储脚本:
config = YAML.load(File.open('config/bots.yml'))
File.open('config/bots.yml', "w") { |f| f.write(YAML.dump(config)) }
输出文件:
---
- token: 070743004:yuSJJdB5L354Zq41iGIggSdYGJ1IhVh8XSrA
comment: ROSPOshop.com
- token: 998001334:zAFo4dBdd3ZZtqgKiGdPqkkYGJ1ppVW8pUZ
comment: pagoSALDO.com bot
- token: 184679990:BBBBBBBBBCCCCCCCGIDDDDDDDHHHHHHHHHH
comment: SOLYARISoftware demo bot
- token: 184679990:BBBBBBBBBCCCCCCUUUUUUUUUUHHHHHHHHHH
comment: Another demo bot
- token: 184679990:BBBBBBBBBCCCCCCCGHGGHHGHGHHHHHHHHHH
comment: Yet Another demo bot
我很不高兴,因为所有数组项现在都已折叠(已删除换行符)。如果项目的数量很长并且/或者每个项目的数据结构是一个变量,那将是非常可悲的:阅读混乱!
问题(1) 有任何 YAML 选项可以为 YAML.dump 做一些更漂亮的打印吗? 例如用空行分隔数组中的每个项目?
问题(2) 我发现这个非常有用的教程(“YAML Cookbook”): http://www.yaml.org/YAML_for_ruby.html#yaml_for_ruby
还有关于解释 YAML 提示和技巧(数据转换等)的最新更新/官方 Ruby 文档吗?
问题(3) 任何可能的 YAML 替代方案?我的意思是也许是读/写 YAML 的替代宝石?顺便说一句,我当然考虑过 JSON,但在读取文本数据时我更喜欢更清晰的 YAML 格式!
更新 顺便说一句,这里有很多信息/有用的 YAML 格式提示: https://en.wikipedia.org/wiki/YAML
【问题讨论】:
标签: ruby file serialization configuration yaml