Skip to content

Commit 5912f09

Browse files
use attribute methods instead of ivars
Co-authored-by: nicholas a. evans <nick@rubinick.dev>
1 parent be6c5bb commit 5912f09

1 file changed

Lines changed: 25 additions & 18 deletions

File tree

lib/logger.rb

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -419,28 +419,35 @@ def with_level(severity)
419419
end
420420

421421
def with_context(context)
422-
fiber = Fiber.current
423422
begin
424-
prev_context = @context_store[fiber]
425-
@context_store[fiber] = if prev_context.nil?
426-
context
427-
else
428-
case context
429-
when Hash
430-
prev_context.merge(context)
431-
when Array
432-
prev_context + context
433-
else
434-
context
435-
end
436-
end
437-
438-
yield
423+
prev_context = context_store[context_key]
424+
merged = merge_context(prev_context, context)
425+
context_store[context_key] = merged
426+
yield merged
439427
ensure
440428
if prev_context.nil?
441-
@context_store.delete(fiber)
429+
context_store.delete(context_key)
430+
else
431+
context_store[context_key] = prev_context
432+
end
433+
end
434+
end
435+
436+
private attr_reader :context_store
437+
438+
private def context_key = Fiber.current
439+
440+
private def merge_context(prev_context, context)
441+
if prev_context.nil?
442+
context.dup
443+
else
444+
case context
445+
when Hash
446+
prev_context.merge(context)
447+
when Array
448+
prev_context + context
442449
else
443-
@context_store[fiber] = prev_context
450+
context.dup
444451
end
445452
end
446453
end

0 commit comments

Comments
 (0)