Ruby Ruby 1.9 之后 YAML 解析的问题 Bug or Feature?

ibachue · 2013年12月18日 · 最后由 betterthornbird 回复于 2014年01月08日 · 2249 次阅读

请教大家:

测试代码如下:

require 'yaml'

a = <<-YAML
---
- !ruby/object:Hash
    a: 1
    b: 2
YAML

YAML.load a

Ruby 1.8 的结果: [{"a"=>1, "b"=>2}] Ruby 1.9 的结果:[{}]

Bug or Feature? 谢谢

那你还想怎样...

#1 楼 @luikore 当然想要得到 1.8 的结果咯 明明这个才 make sense

3 楼 已删除

#3 楼 @bhuztez 没有啊 大家都默认$SAFE = 0

5 楼 已删除

#5 楼 @bhuztez 您这是哪听来的宣传。。

7 楼 已删除

#6 楼 @iBachue

是你少了个 !

require 'yaml'

a = <<-YAML
---
- !!ruby/object:Hash
    a: 1
    b: 2
YAML

YAML.load a

#8 楼 @bhuztez 咦 这样啊 学习了 谢谢啊

#9 楼 @iBachue 那这算 bug 还是 feature? 我也碰到类似的问题了。

#10 楼 @betterthornbird 是 bug 还是 feature 大概要 Ruby core team 去讨论了吧。你有什么问题呢?可以按照上述的去修改,或者干脆去掉这个 tag,本来就可以省略。

#11 楼 @iBachue 我也发现解析的结果不一样了。我的解析源是个很大的文件,1.9.3 和 1.8.7 的解析结果不同导致测试挂掉了,Google && Stackover Flow 上面没有找到很好的类似例子和问题提及这个 Tag 事情以及 YAML 在 ruby 升级之后的变化,我目前发现的是将!变成 !! 之后结果还是有差异,还需要一些时间来研究。另外,谢谢建议,后面我移步到另外讨论话题上去吧。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号