红宝石1.9.2与红宝石1.9.3的不同Marshal.dump输出?

时间:2013-12-27 09:14:59

标签: ruby datetime marshalling

当编组日期时我遇到了一些问题 - 特别是Marshal.dump在同一日期给我不同的输出,当我在ruby 1.9.2和ruby 1.9.3中运行时

特别是,当我跑: 在ruby 1.9.2中的Marshal.dump(Date.tomorrow),我得到:“\ x04 \ bU:\ tDate [\ bU:\ rRational [\ ai \ x03 \ x9D \ xF8Ji \ ai \ x00i \ x03 \ x19 \ x15] #“

当我跑步时: Marshal.dump(Date.tomorrow)在ruby 1.9.3中,我得到: “\ X04 \ BU:\ tDate [\ VI \ x00i \ x03O |%I \ x00i \ x00i \ x00f \ f2299161”

每个版本的ruby是否使用不同的日期格式? (理性vs ??)

由于

1 个答案:

答案 0 :(得分:3)

不保证Marshal能够兼容不同版本。来自documentation

  

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