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)
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"