Skip to content

Introduce SerializationDepth value object to replace primitive obsession (#13) get_serialization_depth_for_class was doing type-checking (is Integer or Hash?), key-coercion (symbol vs string), and falling back to a hardcoded default — all inline. Extract that logic into Observable::SerializationDepth#for_class, making Instrumenter unaware of how depth config is shaped. https://claude.ai/code/session_01KWZUse79XR68i6nGa8VgTu Co-authored-by: Claude <noreply@anthropic.com>#14

Open
johngallagher wants to merge 5 commits into
mainfrom
claude/fix-code-smells-o11wK

Conversation

@johngallagher

Copy link
Copy Markdown
Contributor

No description provided.

johngallagher and others added 5 commits March 9, 2026 09:25
The if/else block assigned the same expression to span_name, function_name,
and method_name_only, calling split(/[#.]/).last twice in the true branch.
Replaced with two clear variables: method_name_only and qualified_name.

https://claude.ai/code/session_01KWZUse79XR68i6nGa8VgTu

Co-authored-by: Claude <noreply@anthropic.com>
Bare rescue catches all StandardError subclasses implicitly, but also
signals unclear intent. Being explicit with 'rescue StandardError' makes
the intent obvious and passes linting checks.

Fixes 10 occurrences across instrumenter.rb (5) and structured_error.rb (5).

https://claude.ai/code/session_01KWZUse79XR68i6nGa8VgTu

Co-authored-by: Claude <noreply@anthropic.com>
The method was duplicating CYAN, BOLD, and RESET escape codes that are
already defined as constants on Span. Replace the local variables with
direct references to Span::CYAN, Span::BOLD, and Span::RESET.

https://claude.ai/code/session_01KWZUse79XR68i6nGa8VgTu

Co-authored-by: Claude <noreply@anthropic.com>
The four *_with_custom_depth methods (serialize_argument, serialize_hash,
serialize_array, serialize_object) were near-identical copies of the base
methods, differing only in whether max_depth was computed from config or
passed explicitly.

Unified into a single family using an optional max_depth parameter (nil =
compute from config, value = use as-is and propagate down). Removes ~65
lines of duplicated code.

https://claude.ai/code/session_01KWZUse79XR68i6nGa8VgTu

Co-authored-by: Claude <noreply@anthropic.com>
…ion (#13)

get_serialization_depth_for_class was doing type-checking (is Integer or Hash?),
key-coercion (symbol vs string), and falling back to a hardcoded default — all
inline. Extract that logic into Observable::SerializationDepth#for_class, making
Instrumenter unaware of how depth config is shaped.

https://claude.ai/code/session_01KWZUse79XR68i6nGa8VgTu

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant