我有一个手写的 YAML 文件片段:
:alerts:
:ctlr_alerts:
- :param: Collector temp
:direction: '>'
:value: 190
- :param:
:direction:
:value:
- :param:
:direction:
:value:
这被读入 Web 服务器,数据用于填充表单。如果用户更改表单中的值,则新数据将写回 YAML 文件,但首先会被丑化:
:alerts:
:ctlr_alerts:
- :param: !str:WEBrick::HTTPUtils::FormData
str: Collector temp
"@filename":
"@header": &id001 {}
"@name": alerts.ctlr_alerts.0.param
"@next_data":
"@raw_header": &id002 []
:value: !str:WEBrick::HTTPUtils::FormData
str: "190"
"@filename":
"@header": *id001
ETC...
我有一些定期运行的小型实用程序脚本,它们也读取相同的 YAML 文件。由于添加了上面的片段,他们在尝试读取文件时收到以下错误:
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/yaml.rb:133:in `transfer': invalid subclass (TypeError)
一种解决方法是添加
require 'webrick'
到每个小脚本。但是,当脚本与此无关时,不得不吸收整个 Web 服务器的代码似乎很可笑。这是一个运行ruby 1.8.6的小型嵌入式系统,资源有点紧张。
在将其转储到 YAML 之前,如何“清理”这个数据结构(将其转换回一个简单的数组)?