手書きの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
等...
同じYAMLファイルを読み取る定期的に実行される小さなユーティリティスクリプトがいくつかあります。上記のフラグメントを追加してから、ファイルを読み込もうとすると次のエラーが発生します。
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/yaml.rb:133:in `transfer': invalid subclass (TypeError)
1つの回避策は追加することです
require 'webrick'
小さなスクリプトのそれぞれに。しかし、スクリプトがそれとは何の関係もないときに、Webサーバー全体のコードを吸い込まなければならないのはばかげているようです。これはruby1.8.6を実行する小さな組み込みシステムであり、リソースは少しタイトです。
YAMLにダンプする前に、このデータ構造を「クリーンアップ」(単純な配列にキャストバック)するにはどうすればよいですか?