diff --git a/common/.rubocop.yml b/common/.rubocop.yml index 94649e0bec..db98871e84 100644 --- a/common/.rubocop.yml +++ b/common/.rubocop.yml @@ -6,6 +6,8 @@ Bundler/OrderedGems: Style/FrozenStringLiteralComment: Exclude: - gemfiles/**/* +Style/ExplicitBlockArgument: + Enabled: false Style/StringLiterals: Exclude: - gemfiles/**/* diff --git a/common/lib/opentelemetry/common/utilities.rb b/common/lib/opentelemetry/common/utilities.rb index eee275f253..d13e251ff8 100644 --- a/common/lib/opentelemetry/common/utilities.rb +++ b/common/lib/opentelemetry/common/utilities.rb @@ -88,10 +88,17 @@ def truncate_attribute_value(value, limit) end end - # Disables tracing within the provided block. - def untraced - Context.with_value(UNTRACED_KEY, true) do |ctx, _| - yield ctx + # Disables tracing within the provided block + # If no block is provided instead returns an + # untraced ctx. + # + # @param [optional Context] context Accepts an explicit context, defaults to current + def untraced(context = Context.current) + context = context.set_value(UNTRACED_KEY, true) + if block_given? + Context.with_current(context) { |ctx| yield ctx } + else + context end end diff --git a/common/test/opentelemetry/common/utilities_test.rb b/common/test/opentelemetry/common/utilities_test.rb index f931242fd8..555b87121d 100644 --- a/common/test/opentelemetry/common/utilities_test.rb +++ b/common/test/opentelemetry/common/utilities_test.rb @@ -26,6 +26,13 @@ def shutdown(timeout: nil); end common_utils.untraced {} assert_equal(false, common_utils.untraced?) end + + it 'supports non block format' do + token = OpenTelemetry::Context.attach(common_utils.untraced) + assert_equal(true, common_utils.untraced?) + OpenTelemetry::Context.detach(token) + assert_equal(false, common_utils.untraced?) + end end describe '#utf8_encode' do