是否可以Marshal::load
从ruby 1.9.3中使用ruby版本1.8.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
显示的版本相同。