Ruby Hash.has_key? 为Windows上的第一个键返回false

我在Windows上有一个奇怪的问题与ruby散列。 我正在加载下面的YAML文件,并将其parsing为散列:

tasks: - clone_skeleton, <skeleton_path> - summit_capify, <skeleton_path> 

我正在使用YAML.load()将文件加载到散列。 如果我打印出hash.keys任务列为一个关键,但如果我做hash.has_key?(“任务”)我回来了假。 但是,如果我改变这个yaml

 directory_structure: tasks: - clone_skeleton, <skeleton_path> - summit_capify, <skeleton_path> 

hash.has_key?(“tasks”)返回true,但是hash.has_key?(“directory_structure”)返回false。 我没有在Linux上testing,但我似乎没有在OS X,只是Windows上的这个问题。 我正在使用Ruby 1.9.2,并在Cygwin中进行了testing,并使用了标准的命令提示符。

我不知道这是一个ruby错误,与我的YAML或其他问题。 有任何想法吗?

更新:看起来这是在Ruby 1.9.3中修复的

钥匙是符号而不是字符串? 尝试has_key?(:tasks)

每当你调试的时候,不要puts hash.keys ,而是puts hash.keys.inspect – 后者表明到底发生了什么。

或者你可能想要做puts hash.inspect