Ruby YAML.dump对零值的处理不一致

Ruby YAML.dump对零值的处理不一致,ruby,macos,Ruby,Macos,我已经厌倦了调试这个程序,希望有人能帮我找到解决方案 我们正在使用YAML.dump函数在测试中创建状态捕获。 从docker移动到Mac Os Catalina本地版本后发现奇怪的差异冲突。 我们注意到的区别在于零密钥被转储的方式。在linux上,nil值被替换为空空间。 而在我的mac电脑上,由于某种原因,nil值被YAML.dump完全吞噬,没有任何痕迹 预期结果 在Docker和Linux中: RUBY_VERSION => "2.3.8" require 'y

我已经厌倦了调试这个程序,希望有人能帮我找到解决方案

我们正在使用
YAML.dump
函数在测试中创建状态捕获。 从docker移动到Mac Os Catalina本地版本后发现奇怪的差异冲突。 我们注意到的区别在于零密钥被转储的方式。在linux上,nil值被替换为空空间。 而在我的mac电脑上,由于某种原因,nil值被
YAML.dump
完全吞噬,没有任何痕迹

预期结果 在Docker和Linux中:

RUBY_VERSION
=> "2.3.8"
require 'yaml'; YAML.dump({user_name: "Maxim", start_time: nil, end_time: nil})
=> "---\n:user_name: Maxim\n:start_time: \n:end_time: \n"
在Mac上(使用内置ruby

使用ruby build编译的ruby版本的实际结果 在Mac上(2.3.8、2.4.0、2.6.3、2.7.2) 尝试通过asdf(使用ruby构建)和rbenv进行安装,结果相同

irb(main):002:0> require 'yaml'; YAML.dump({user_name: "Maxim", start_time: nil, end_time: nil})
=> "---\n:user_name: Maxim\n:start_time:\n:end_time:\n"
问题似乎与ruby build有关,因为linux使用预编译版本。 是否可能与xcode中的更改有关

系统详细信息
  • Xcode版本12.3(12C33)
  • ruby build 20201210
  • mac os 10.15.7(19H15)

Ruby的YAML支持来自使用libyaml的用户。你们有什么版本的libyaml?版本2.5。我确实相信,这个问题与Ruby的YAML支持有关,它使用libyaml。你们有什么版本的libyaml?版本2.5。我相信这个问题与
irb(main):002:0> require 'yaml'; YAML.dump({user_name: "Maxim", start_time: nil, end_time: nil})
=> "---\n:user_name: Maxim\n:start_time:\n:end_time:\n"