Ruby Marshal ::从1.8.3加载1.8.1文件

时间:2012-01-03 22:49:26

标签: ruby version unmarshalling

是否可以Marshal::load从ruby 1.9.3中使用ruby版本1.8.1转储的文件?

1 个答案:

答案 0 :(得分:2)

它应该可以工作(我没有安装1.8.1来明确测试它)。每the Marshal documentation

  

编组数据具有与对象信息一起存储的主要和次要版本号。在正常使用中,编组只能加载使用相同主版本号和相同或较低版本号编写的数据。如果设置了Ruby的“详细”标志(通常使用-d,-v,-w或-verbose),则主要和次要数字必须完全匹配。 Marshal版本控制独立于Ruby的版本号。您可以通过读取封送数据的前两个字节来提取版本。

从Ruby 1.9.3开始,marshall.c将主要/次要版本定义为:

#define MARSHAL_MAJOR   4
#define MARSHAL_MINOR   8

查看Ruby 1.8.1' marshall.c显示的版本相同。