Ruby的Marshall格式架构和Ruby版本是否独立?

时间:2012-04-04 22:39:40

标签: ruby serialization

我正在考虑使用Marshall将对象序列化到缓存中,但我想确保相同的缓存可用于跨架构(linux x86,linux x86-64,mac x86-64)和Ruby版本( 1.8.7,1.9.3)。我会好吗?

1 个答案:

答案 0 :(得分:4)

编组格式是版本化的,那些版本与ruby版本不对应。我相信它也是独立于架构的。

碰巧的是,那个版本在1.8.7和今天(目前为4.8)相同,所以从理论上说你很好。在实践中,我似乎回想起一些粗糙的边缘,特别是在字符串周围,在ruby 1.9中有一个相关的编码,但不是1.8。

一个缺点是,marshal可能非常冗长,因为它会将所有实例变量转储到对象中。例如,对于ActiveRecord对象,有一些实例变量只跟踪一些缓存数据。