如何使用TCPServer序列化对象?

时间:2012-01-12 16:10:24

标签: ruby regex serialization yaml syck

为了加快我的链中特定脚本的频繁重复运行,我开始序列化到磁盘自定义对象,否则需要花费太多时间来创建聚合。

使用内置的Yaml和/或Marshal。

Yaml序列化为看似健康的文本文件,但在尝试反序列化时会产生以下错误:

b2 = YAML::load(File.open("browserObj.yaml", 'r'))
Syck::TypeError: Invalid Regular expression: "/\\A\\s*\n        ([a-zA-Z][-+.a-zA-Z\\d]*):          ...and many more strange lines 

然而,即使尝试通过Marshal错误保存到二进制文件:

puts File.open("browserObj.bin", 'w').write Marshal::dump($browser)  
TypeError: can't dump TCPServer

# Marshal::dump($browser, File.open("browserObj.bin", 'wb'))  # same error

最后故意不做$browser.close我可以选择让这个TCPServer保持活动并在Ruby脚本的生命周期后运行。

我有什么想法可以逃脱这个吗?我保证成功重新加载以仔细检查任何套接字/内部对象的有效性,并且如果必须的话,只需重新初始化一个全新的对象。

0 个答案:

没有答案