我正在考虑使用 Marshall 将对象序列化到缓存中,但我想确保相同的缓存可以跨架构(linux x86、linux x86-64、mac x86-64)和跨 Ruby 版本使用( 1.8.7、1.9.3)。我会没事吗?
最佳答案
marshal 格式是版本化的,这些版本与 ruby 版本不对应。我相信它也是独立于体系结构的。
碰巧,该版本在 1.8.7 中与今天(当前为 4.8)相同,因此理论上您可以继续使用。在实践中,我似乎记得一些粗糙的边缘,特别是围绕字符串,它在 ruby 1.9 中有一个关联的编码,但在 1.8 中没有。
一个缺点是 marshal 可能非常冗长,因为它会转储对象中的所有实例变量。例如,对于 ActiveRecord 对象,有一些实例变量只跟踪一些缓存数据。
关于ruby - Ruby 的 Marshall 格式架构和 Ruby-version 是否独立?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020273/