我有一个问题,YAML 在 ruby 1.8 和 1.9 中的工作方式不太一样。特别是在转储 DateTime 对象时。
红宝石 1.8:
require 'yaml'
YAML.dump(DateTime.now)
=> "--- 2012-06-21T14:29:02+02:00\n"
红宝石 1.9:
require 'yaml'
YAML.dump(DateTime.now)
=> "--- !ruby/object:DateTime 2012-06-21 14:29:41.874102975 +02:00\n...\n"
困扰我的是!ruby/object:DateTime标签,这很烦人。在 1.9 中使用 Time 对象解决了这个问题:
YAML.dump(DateTime.now.to_time)
=> "--- 2012-06-21 14:31:37.904841646 +02:00\n...\n"
问题是 ruby 1.8 中不存在 to_times 。此外,ruby 1.8 Time 类不处理时区(不可能创建具有任意时区的 Time 对象)。
如果可能的话,我希望时间格式相同。
那我怎么能在 YAML 中转储一个 DateTime 对象呢?