From d18e420215ff6b48a04e5fc6f89f2fa25f6aef30 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 9 Mar 2026 12:17:36 +0900 Subject: [PATCH] Use JSON for cargo metadata parsing Co-Authored-By: Claude Opus 4.6 --- lib/rubygems/ext/cargo_builder.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/rubygems/ext/cargo_builder.rb b/lib/rubygems/ext/cargo_builder.rb index 42dca3b10254..516459dd6007 100644 --- a/lib/rubygems/ext/cargo_builder.rb +++ b/lib/rubygems/ext/cargo_builder.rb @@ -227,10 +227,9 @@ def cargo_crate_name(cargo_dir, manifest_path, results) raise Gem::InstallError, "cargo metadata failed#{exit_reason}" end - # cargo metadata output is specified as json, but with the - # --format-version 1 option the output is compatible with YAML, so we can - # avoid the json dependency - metadata = Gem::SafeYAML.safe_load(output) + # cargo metadata output is specified as json + require "json" + metadata = JSON.parse(output) package = metadata["packages"].find {|pkg| normalize_path(pkg["manifest_path"]) == manifest_path } unless package found = metadata["packages"].map {|md| "#{md["name"]} at #{md["manifest_path"]}" }