代码之家  ›  专栏  ›  技术社区  ›  Jeremy Woodland

ruby to_yaml 2.0.0新增!ruby/object:哈希,但YAML.load不会读取它

  •  1
  • Jeremy Woodland  · 技术社区  · 12 年前

    有没有办法禁用ruby 2.0.0 YAML的ruby类型信息后缀?

    我刚升级到ruby 2.0.0,遇到了YAML问题。我读了更新,写了一个以前看起来像这样的yaml文件

    test:
      test2:
        somevar: hello
    

    当我把这个输入到ruby 200中时,它读起来还可以,但写着:

    test: !ruby/object:Hash
      test2: !ruby/object:Hash
        somevar: hello
    

    当我重新运行程序时,YAML.load什么也没读。

    myH = YAML.load_file( YAML_FPATH )
    puts "Yaml as Hash:" + myH.inspect
    >> Yaml as Hash: {}
    

    奇怪的是,如果我将文件的“test:!ruby/object:Hash”版本传递给ruby 1.8.7,它会读取带后缀的文件OK,并写入一个无后缀的文件。

    1 回复  |  直到 12 年前
        1
  •  0
  •   Jeremy Woodland    12 年前

    发现问题:我修改了hash.to_yaml,以便对密钥进行排序。由于我的代码是基于hash.to_yaml 1.8.7的,我需要基于hash.to_yaml 2.0.0对其进行修改。

    推荐文章