File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments