diff --git a/lib-injection/host_inject.rb b/lib-injection/host_inject.rb index 8baf5e18293..6583f8c4536 100644 --- a/lib-injection/host_inject.rb +++ b/lib-injection/host_inject.rb @@ -197,7 +197,7 @@ def bundler_supported? bundle_add_cmd = "bundle add #{gem} --skip-install --version #{gem_version_mapping[gem]} " bundle_add_cmd << ' --verbose ' if ENV['DD_TRACE_DEBUG'] == 'true' - bundle_add_cmd << '--require datadog/auto_instrument' if gem == 'datadog' + bundle_add_cmd << '--require datadog/single_step_instrument' if gem == 'datadog' utils.debug "Injection with `#{bundle_add_cmd}`" diff --git a/lib/datadog/single_step_instrument.rb b/lib/datadog/single_step_instrument.rb new file mode 100644 index 00000000000..c8d5e1218a4 --- /dev/null +++ b/lib/datadog/single_step_instrument.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +# +# Entrypoint file for single step instrumentation. +# +# This file's path is private. Do not reference this file. +# +begin + require_relative 'auto_instrument' +rescue StandardError, LoadError => e + warn "Single step instrumentation failed: #{e.class}, #{e.message}" +end diff --git a/sig/datadog/single_step_instrument.rbs b/sig/datadog/single_step_instrument.rbs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/spec/datadog/single_step_instrument_spec.rb b/spec/datadog/single_step_instrument_spec.rb new file mode 100644 index 00000000000..26cef7162d4 --- /dev/null +++ b/spec/datadog/single_step_instrument_spec.rb @@ -0,0 +1,23 @@ +RSpec.describe 'Single step instrument' do + it do + expect_in_fork do + expect_any_instance_of(Object) + .to receive(:require_relative).with('auto_instrument').and_raise(LoadError) + + expect do + load 'datadog/single_step_instrument.rb' + end.to output(/Single step instrumentation failed/).to_stderr + end + end + + it do + expect_in_fork do + expect_any_instance_of(Object) + .to receive(:require_relative).with('auto_instrument').and_raise(StandardError) + + expect do + load 'datadog/single_step_instrument.rb' + end.to output(/Single step instrumentation failed/).to_stderr + end + end +end