From 0547b06929bd8fe8cde079ed64cc23389ec2b16d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Nov 2026 04:18:54 +0000 Subject: [PATCH 1/2] Bump magnus from 0.8.2 to 0.9.3 in the cargo group Bumps the cargo group with 1 update: [magnus](https://github.com/matsadler/magnus). Updates `magnus` from 0.8.2 to 0.9.3 - [Release notes](https://github.com/matsadler/magnus/releases) - [Changelog](https://github.com/matsadler/magnus/blob/main/CHANGELOG.md) - [Commits](https://github.com/matsadler/magnus/compare/0.8.2...0.9.3) --- updated-dependencies: - dependency-name: magnus dependency-version: 0.9.3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo ... Signed-off-by: dependabot[bot] --- Cargo.lock | 33 ++++++++++++++++++++++++++++----- ext/code_ownership/Cargo.toml | 2 +- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8131d6d..6e7932c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -178,7 +178,7 @@ name = "code_ownership" version = "0.1.0" dependencies = [ "codeowners", - "magnus", + "magnus 0.9.3", "rb-sys", "rb-sys-env", "serde", @@ -447,11 +447,23 @@ checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "magnus" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b36a5b126bbe97eb0d02d07acfeb327036c6319fd816139a49824a83b7f9012" +checksum = "e76237a607e1dea288dd0ef0c6c8f49037df2152d14bb52b3542c46522d9e6fc" dependencies = [ - "magnus-macros", + "magnus-macros 0.8.0", + "rb-sys", + "rb-sys-env", + "seq-macro", +] + +[[package]] +name = "magnus" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ef424404d166cbb71c8b8d19c9c589c748c4547c1afa1928c5504299f6c713" +dependencies = [ + "magnus-macros 0.9.1", "rb-sys", "rb-sys-env", "seq-macro", @@ -468,6 +480,17 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "magnus-macros" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dafde2eeb66f090e0f326112323eb8324b12cb32b5d1210e541d3df6b0ce77e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "matchers" version = "0.2.0" @@ -761,7 +784,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ff64c88ddd26acdcad5a501f18bcc339927b77b69f4a03bfaf2a6fc5ba2ac4b" dependencies = [ - "magnus", + "magnus 0.8.4", "serde", "tap", ] diff --git a/ext/code_ownership/Cargo.toml b/ext/code_ownership/Cargo.toml index 80d5292..bac27cc 100644 --- a/ext/code_ownership/Cargo.toml +++ b/ext/code_ownership/Cargo.toml @@ -14,7 +14,7 @@ rb-sys = { version = "0.9.111", features = [ "bindgen-deprecated-types", "stable-api-compiled-fallback", ] } -magnus = { version = "0.8" } +magnus = { version = "0.9" } serde = { version = "1.0.219", features = ["derive"] } serde_magnus = "0.11" codeowners = { git = "https://github.com/rubyatscale/codeowners-rs.git", tag = "v0.5.0" } From 8b059a5ba6e593382478025ffe46917254370032 Mon Sep 17 00:00:00 2001 From: Douglas Eichelberger Date: Mon, 2 Nov 2026 12:30:55 -0800 Subject: [PATCH 2/2] Drop serde_magnus so the extension builds against magnus 0.9 serde_magnus 0.11 still requires magnus ^0.8.1 and no release supports 0.9 yet (OneSignal/serde-magnus#26 is open). With both magnus versions in the lockfile, serde_magnus::serialize returned a magnus 0.8 Value and Error that the 0.9 code could not use, failing the compile in every RSpec job. The extension only serialized three shapes, so build them with magnus directly: Team as a Hash with Symbol keys in field order, the teams_for_files result as a Hash of String to Team or nil, and info_messages as an Array of String. These match what serde_magnus produced, and serde is no longer needed. --- Cargo.lock | 46 ++--------------------------------- ext/code_ownership/Cargo.toml | 2 -- ext/code_ownership/src/lib.rs | 26 ++++++++++++-------- 3 files changed, 18 insertions(+), 56 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6e7932c..b182277 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -178,11 +178,9 @@ name = "code_ownership" version = "0.1.0" dependencies = [ "codeowners", - "magnus 0.9.3", + "magnus", "rb-sys", "rb-sys-env", - "serde", - "serde_magnus", ] [[package]] @@ -445,41 +443,18 @@ version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" -[[package]] -name = "magnus" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e76237a607e1dea288dd0ef0c6c8f49037df2152d14bb52b3542c46522d9e6fc" -dependencies = [ - "magnus-macros 0.8.0", - "rb-sys", - "rb-sys-env", - "seq-macro", -] - [[package]] name = "magnus" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40ef424404d166cbb71c8b8d19c9c589c748c4547c1afa1928c5504299f6c713" dependencies = [ - "magnus-macros 0.9.1", + "magnus-macros", "rb-sys", "rb-sys-env", "seq-macro", ] -[[package]] -name = "magnus-macros" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47607461fd8e1513cb4f2076c197d8092d921a1ea75bd08af97398f593751892" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", -] - [[package]] name = "magnus-macros" version = "0.9.1" @@ -778,17 +753,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "serde_magnus" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ff64c88ddd26acdcad5a501f18bcc339927b77b69f4a03bfaf2a6fc5ba2ac4b" -dependencies = [ - "magnus 0.8.4", - "serde", - "tap", -] - [[package]] name = "serde_yaml" version = "0.9.34+deprecated" @@ -874,12 +838,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - [[package]] name = "tempfile" version = "3.23.0" diff --git a/ext/code_ownership/Cargo.toml b/ext/code_ownership/Cargo.toml index bac27cc..06f8ca8 100644 --- a/ext/code_ownership/Cargo.toml +++ b/ext/code_ownership/Cargo.toml @@ -15,8 +15,6 @@ rb-sys = { version = "0.9.111", features = [ "stable-api-compiled-fallback", ] } magnus = { version = "0.9" } -serde = { version = "1.0.219", features = ["derive"] } -serde_magnus = "0.11" codeowners = { git = "https://github.com/rubyatscale/codeowners-rs.git", tag = "v0.5.0" } [dev-dependencies] diff --git a/ext/code_ownership/src/lib.rs b/ext/code_ownership/src/lib.rs index da617ad..cf6af1e 100644 --- a/ext/code_ownership/src/lib.rs +++ b/ext/code_ownership/src/lib.rs @@ -1,17 +1,26 @@ use std::{collections::HashMap, env, path::PathBuf}; use codeowners::runner::{self, RunConfig}; -use magnus::{Error, Ruby, Value, function, prelude::*}; -use serde::{Deserialize, Serialize}; -use serde_magnus::serialize; +use magnus::{Error, IntoValue, Ruby, Value, function, prelude::*}; -#[derive(Clone, Debug, Serialize, Deserialize)] +#[derive(Clone, Debug)] pub struct Team { pub team_name: String, pub team_config_yml: String, pub reasons: Vec, } +impl IntoValue for Team { + fn into_value_with(self, ruby: &Ruby) -> Value { + ruby.hash_from_iter([ + (ruby.to_symbol("team_name"), self.team_name.into_value_with(ruby)), + (ruby.to_symbol("team_config_yml"), self.team_config_yml.into_value_with(ruby)), + (ruby.to_symbol("reasons"), self.reasons.into_value_with(ruby)), + ]) + .into_value_with(ruby) + } +} + fn for_team(ruby: &Ruby, team_name: String) -> Result { let run_config = build_run_config(); let team = runner::for_team(&run_config, &team_name); @@ -35,8 +44,7 @@ fn teams_for_files(ruby: &Ruby, file_paths: Vec) -> Result teams_map.insert(path, None); } } - let serialized: Value = serialize(ruby, &teams_map)?; - Ok(serialized) + Ok(ruby.hash_from_iter(teams_map).into_value_with(ruby)) } Err(e) => Err(Error::new(ruby.exception_runtime_error(), e.to_string())), } @@ -57,8 +65,7 @@ fn for_file(ruby: &Ruby, file_path: String) -> Result, Error> { .map(|source| source.to_string()) .collect(), }; - let serialized: Value = serialize(ruby, &team)?; - Ok(Some(serialized)) + Ok(Some(team.into_value_with(ruby))) } else { Ok(None) } @@ -111,8 +118,7 @@ fn validate_result(ruby: &Ruby, run_result: &runner::RunResult) -> Result RunConfig {