ddtrace 0.28.0 → 0.29.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +8 -0
  3. data/Appraisals +57 -2
  4. data/CHANGELOG.md +41 -12
  5. data/Rakefile +3 -3
  6. data/ddtrace.gemspec +2 -1
  7. data/docs/DevelopmentGuide.md +1 -1
  8. data/docs/GettingStarted.md +6 -6
  9. data/lib/ddtrace.rb +7 -0
  10. data/lib/ddtrace/buffer.rb +60 -1
  11. data/lib/ddtrace/configuration/base.rb +82 -0
  12. data/lib/ddtrace/configuration/option.rb +28 -5
  13. data/lib/ddtrace/configuration/option_definition.rb +100 -0
  14. data/lib/ddtrace/configuration/options.rb +28 -14
  15. data/lib/ddtrace/configuration/settings.rb +77 -64
  16. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +9 -7
  17. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +8 -6
  18. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +8 -14
  19. data/lib/ddtrace/contrib/active_model_serializers/event.rb +1 -1
  20. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +11 -16
  21. data/lib/ddtrace/contrib/active_record/event.rb +1 -1
  22. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +8 -6
  23. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +2 -2
  24. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +4 -1
  25. data/lib/ddtrace/contrib/aws/configuration/settings.rb +8 -6
  26. data/lib/ddtrace/contrib/configuration/settings.rb +5 -11
  27. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +8 -6
  28. data/lib/ddtrace/contrib/dalli/instrumentation.rb +1 -18
  29. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +8 -6
  30. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +8 -6
  31. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +8 -6
  32. data/lib/ddtrace/contrib/ethon/integration.rb +0 -4
  33. data/lib/ddtrace/contrib/excon/configuration/settings.rb +9 -7
  34. data/lib/ddtrace/contrib/excon/middleware.rb +1 -1
  35. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +8 -6
  36. data/lib/ddtrace/contrib/faraday/middleware.rb +1 -1
  37. data/lib/ddtrace/contrib/faraday/patcher.rb +8 -2
  38. data/lib/ddtrace/contrib/faraday/rack_builder.rb +18 -0
  39. data/lib/ddtrace/contrib/grape/configuration/settings.rb +8 -6
  40. data/lib/ddtrace/contrib/grape/instrumentation.rb +2 -42
  41. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +8 -6
  42. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +8 -6
  43. data/lib/ddtrace/contrib/grpc/integration.rb +1 -3
  44. data/lib/ddtrace/contrib/http/configuration/settings.rb +8 -6
  45. data/lib/ddtrace/contrib/http/instrumentation.rb +1 -23
  46. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +8 -6
  47. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +8 -6
  48. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -23
  49. data/lib/ddtrace/contrib/patchable.rb +1 -1
  50. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +8 -14
  51. data/lib/ddtrace/contrib/racecar/event.rb +1 -1
  52. data/lib/ddtrace/contrib/rack/configuration/settings.rb +8 -6
  53. data/lib/ddtrace/contrib/rack/request_queue.rb +7 -6
  54. data/lib/ddtrace/contrib/rails/configuration/settings.rb +30 -21
  55. data/lib/ddtrace/contrib/rake/configuration/settings.rb +8 -6
  56. data/lib/ddtrace/contrib/rake/integration.rb +0 -4
  57. data/lib/ddtrace/contrib/redis/configuration/settings.rb +8 -6
  58. data/lib/ddtrace/contrib/resque/configuration/settings.rb +8 -6
  59. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +8 -6
  60. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -4
  61. data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -18
  62. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +8 -6
  63. data/lib/ddtrace/contrib/sequel/integration.rb +0 -4
  64. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +8 -6
  65. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +8 -6
  66. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +8 -6
  67. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +8 -6
  68. data/lib/ddtrace/diagnostics/health.rb +30 -0
  69. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +1 -1
  70. data/lib/ddtrace/distributed_tracing/headers/headers.rb +2 -0
  71. data/lib/ddtrace/ext/diagnostics.rb +25 -0
  72. data/lib/ddtrace/ext/runtime.rb +1 -7
  73. data/lib/ddtrace/metrics.rb +89 -6
  74. data/lib/ddtrace/propagation/http_propagator.rb +2 -2
  75. data/lib/ddtrace/runtime/class_count.rb +3 -3
  76. data/lib/ddtrace/runtime/object_space.rb +19 -0
  77. data/lib/ddtrace/span.rb +1 -1
  78. data/lib/ddtrace/tracer.rb +5 -4
  79. data/lib/ddtrace/transport/http/client.rb +3 -4
  80. data/lib/ddtrace/transport/http/response.rb +4 -0
  81. data/lib/ddtrace/transport/http/statistics.rb +30 -0
  82. data/lib/ddtrace/transport/statistics.rb +28 -0
  83. data/lib/ddtrace/version.rb +3 -1
  84. data/lib/ddtrace/workers.rb +4 -2
  85. data/lib/ddtrace/writer.rb +3 -3
  86. metadata +74 -54
@@ -1,68 +1,97 @@
1
+ require 'ddtrace/configuration/base'
2
+
1
3
  require 'ddtrace/ext/analytics'
2
4
  require 'ddtrace/ext/distributed'
3
5
  require 'ddtrace/ext/runtime'
4
- require 'ddtrace/configuration/options'
5
6
 
6
- require 'ddtrace/environment'
7
7
  require 'ddtrace/tracer'
8
8
  require 'ddtrace/metrics'
9
+ require 'ddtrace/diagnostics/health'
9
10
 
10
11
  module Datadog
11
12
  module Configuration
12
13
  # Global configuration settings for the trace library.
13
14
  class Settings
14
- extend Datadog::Environment::Helpers
15
- include Options
16
-
17
- option :analytics_enabled,
18
- default: -> { env_to_bool(Ext::Analytics::ENV_TRACE_ANALYTICS_ENABLED, nil) },
19
- lazy: true
20
-
21
- option :report_hostname,
22
- default: -> { env_to_bool(Ext::NET::ENV_REPORT_HOSTNAME, false) },
23
- lazy: true
24
-
25
- option :runtime_metrics_enabled,
26
- default: -> { env_to_bool(Ext::Runtime::Metrics::ENV_ENABLED, false) },
27
- lazy: true
28
-
29
- # Look for all headers by default
30
- option :propagation_extract_style,
31
- default: lambda {
32
- env_to_list(Ext::DistributedTracing::PROPAGATION_EXTRACT_STYLE_ENV,
33
- [Ext::DistributedTracing::PROPAGATION_STYLE_DATADOG,
34
- Ext::DistributedTracing::PROPAGATION_STYLE_B3,
35
- Ext::DistributedTracing::PROPAGATION_STYLE_B3_SINGLE_HEADER])
36
- },
37
- lazy: true
38
-
39
- # Only inject Datadog headers by default
40
- option :propagation_inject_style,
41
- default: lambda {
42
- env_to_list(Ext::DistributedTracing::PROPAGATION_INJECT_STYLE_ENV,
43
- [Ext::DistributedTracing::PROPAGATION_STYLE_DATADOG])
44
- },
45
- lazy: true
46
-
47
- option :tracer, default: Tracer.new
48
-
49
- def initialize(options = {})
50
- configure(options)
15
+ include Base
16
+
17
+ #
18
+ # Configuration options
19
+ #
20
+ option :analytics_enabled do |o|
21
+ o.default { env_to_bool(Ext::Analytics::ENV_TRACE_ANALYTICS_ENABLED, nil) }
22
+ o.lazy
23
+ end
24
+
25
+ option :report_hostname do |o|
26
+ o.default { env_to_bool(Ext::NET::ENV_REPORT_HOSTNAME, false) }
27
+ o.lazy
51
28
  end
52
29
 
53
- def configure(options = {})
54
- self.class.options.dependency_order.each do |name|
55
- next unless options.key?(name)
56
- respond_to?("#{name}=") ? send("#{name}=", options[name]) : set_option(name, options[name])
30
+ option :runtime_metrics_enabled do |o|
31
+ o.default { env_to_bool(Ext::Runtime::Metrics::ENV_ENABLED, false) }
32
+ o.lazy
33
+ end
34
+
35
+ settings :distributed_tracing do
36
+ option :propagation_extract_style do |o|
37
+ o.default do
38
+ # Look for all headers by default
39
+ env_to_list(Ext::DistributedTracing::PROPAGATION_EXTRACT_STYLE_ENV,
40
+ [Ext::DistributedTracing::PROPAGATION_STYLE_DATADOG,
41
+ Ext::DistributedTracing::PROPAGATION_STYLE_B3,
42
+ Ext::DistributedTracing::PROPAGATION_STYLE_B3_SINGLE_HEADER])
43
+ end
44
+
45
+ o.lazy
46
+ end
47
+
48
+ option :propagation_inject_style do |o|
49
+ o.default do
50
+ # Only inject Datadog headers by default
51
+ env_to_list(Ext::DistributedTracing::PROPAGATION_INJECT_STYLE_ENV,
52
+ [Ext::DistributedTracing::PROPAGATION_STYLE_DATADOG])
53
+ end
54
+
55
+ o.lazy
57
56
  end
57
+ end
58
58
 
59
- yield(self) if block_given?
59
+ settings :diagnostics do
60
+ option :health_metrics do |o|
61
+ o.default do
62
+ Datadog::Diagnostics::Health::Metrics.new(
63
+ enabled: env_to_bool(Datadog::Ext::Diagnostics::Health::Metrics::ENV_ENABLED, false)
64
+ )
65
+ end
66
+
67
+ o.lazy
68
+ end
60
69
  end
61
70
 
62
- def distributed_tracing
63
- # TODO: Move distributed tracing configuration to it's own Settings sub-class
64
- # DEV: We do this to fake `Datadog.configuration.distributed_tracing.propagation_inject_style`
65
- self
71
+ option :tracer do |o|
72
+ o.default Tracer.new
73
+
74
+ # On reset, shut down the old tracer,
75
+ # then instantiate a new one.
76
+ o.resetter do |tracer|
77
+ tracer.shutdown!
78
+ Tracer.new
79
+ end
80
+
81
+ # Backwards compatibility for configuring tracer e.g. `c.tracer debug: true`
82
+ o.helper :tracer do |options = nil|
83
+ tracer = options && options.key?(:instance) ? set_option(:tracer, options[:instance]) : get_option(:tracer)
84
+
85
+ tracer.tap do |t|
86
+ unless options.nil?
87
+ t.configure(options)
88
+ t.class.log = options[:log] if options[:log]
89
+ t.set_tags(options[:tags]) if options[:tags]
90
+ t.set_tags(env: options[:env]) if options[:env]
91
+ t.class.debug_logging = options.fetch(:debug, false)
92
+ end
93
+ end
94
+ end
66
95
  end
67
96
 
68
97
  def runtime_metrics(options = nil)
@@ -71,22 +100,6 @@ module Datadog
71
100
 
72
101
  runtime_metrics.configure(options)
73
102
  end
74
-
75
- # Backwards compatibility for configuring tracer e.g. `c.tracer debug: true`
76
- remove_method :tracer
77
- def tracer(options = nil)
78
- tracer = options && options.key?(:instance) ? set_option(:tracer, options[:instance]) : get_option(:tracer)
79
-
80
- tracer.tap do |t|
81
- unless options.nil?
82
- t.configure(options)
83
- t.class.log = options[:log] if options[:log]
84
- t.set_tags(options[:tags]) if options[:tags]
85
- t.set_tags(env: options[:env]) if options[:env]
86
- t.class.debug_logging = options.fetch(:debug, false)
87
- end
88
- end
89
- end
90
103
  end
91
104
  end
92
105
  end
@@ -7,16 +7,18 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the ActionPack integration
9
9
  class Settings < Contrib::Configuration::Settings
10
- option :analytics_enabled,
11
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) },
12
- lazy: true
10
+ option :analytics_enabled do |o|
11
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) }
12
+ o.lazy
13
+ end
13
14
 
14
- option :analytics_sample_rate,
15
- default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
16
- lazy: true
15
+ option :analytics_sample_rate do |o|
16
+ o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
17
+ o.lazy
18
+ end
17
19
 
18
20
  option :controller_service
19
- option :exception_controller, default: nil
21
+ option :exception_controller
20
22
  option :service_name, default: Ext::SERVICE_NAME
21
23
  end
22
24
  end
@@ -7,13 +7,15 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the ActionView integration
9
9
  class Settings < Contrib::Configuration::Settings
10
- option :analytics_enabled,
11
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
12
- lazy: true
10
+ option :analytics_enabled do |o|
11
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
12
+ o.lazy
13
+ end
13
14
 
14
- option :analytics_sample_rate,
15
- default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
16
- lazy: true
15
+ option :analytics_sample_rate do |o|
16
+ o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
17
+ o.lazy
18
+ end
17
19
 
18
20
  option :service_name, default: Ext::SERVICE_NAME
19
21
  option :template_base_path, default: 'views/'
@@ -7,23 +7,17 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the ActiveModelSerializers integration
9
9
  class Settings < Contrib::Configuration::Settings
10
- option :analytics_enabled,
11
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
12
- lazy: true
10
+ option :analytics_enabled do |o|
11
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
12
+ o.lazy
13
+ end
13
14
 
14
- option :analytics_sample_rate,
15
- default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
16
- lazy: true
15
+ option :analytics_sample_rate do |o|
16
+ o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
17
+ o.lazy
18
+ end
17
19
 
18
20
  option :service_name, default: Ext::SERVICE_NAME
19
- option :tracer, default: Datadog.tracer do |value|
20
- (value || Datadog.tracer).tap do |v|
21
- # Make sure to update tracers of all subscriptions
22
- Events.subscriptions.each do |subscription|
23
- subscription.tracer = v
24
- end
25
- end
26
- end
27
21
  end
28
22
  end
29
23
  end
@@ -21,7 +21,7 @@ module Datadog
21
21
  end
22
22
 
23
23
  def tracer
24
- configuration[:tracer]
24
+ -> { configuration[:tracer] }
25
25
  end
26
26
 
27
27
  def configuration
@@ -8,25 +8,20 @@ module Datadog
8
8
  module Configuration
9
9
  # Custom settings for the ActiveRecord integration
10
10
  class Settings < Contrib::Configuration::Settings
11
- option :analytics_enabled,
12
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
13
- lazy: true
11
+ option :analytics_enabled do |o|
12
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
13
+ o.lazy
14
+ end
14
15
 
15
- option :analytics_sample_rate,
16
- default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
17
- lazy: true
16
+ option :analytics_sample_rate do |o|
17
+ o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
18
+ o.lazy
19
+ end
18
20
 
19
21
  option :orm_service_name
20
- option :service_name,
21
- default: -> { Utils.adapter_name },
22
- lazy: true
23
-
24
- option :tracer, default: Datadog.tracer do |value|
25
- value.tap do
26
- Events.subscriptions.each do |subscription|
27
- subscription.tracer = value
28
- end
29
- end
22
+ option :service_name do |o|
23
+ o.default { Utils.adapter_name }
24
+ o.lazy
30
25
  end
31
26
  end
32
27
  end
@@ -17,7 +17,7 @@ module Datadog
17
17
  end
18
18
 
19
19
  def tracer
20
- configuration[:tracer]
20
+ -> { configuration[:tracer] }
21
21
  end
22
22
 
23
23
  def configuration
@@ -7,13 +7,15 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the ActiveSupport integration
9
9
  class Settings < Contrib::Configuration::Settings
10
- option :analytics_enabled,
11
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
12
- lazy: true
10
+ option :analytics_enabled do |o|
11
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
12
+ o.lazy
13
+ end
13
14
 
14
- option :analytics_sample_rate,
15
- default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
16
- lazy: true
15
+ option :analytics_sample_rate do |o|
16
+ o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
17
+ o.lazy
18
+ end
17
19
 
18
20
  option :cache_service, default: Ext::SERVICE_CACHE
19
21
  end
@@ -41,7 +41,7 @@ module Datadog
41
41
  end
42
42
 
43
43
  # Creates a subscription and immediately activates it.
44
- def subscribe(pattern, span_name, options = {}, tracer = Datadog.tracer, &block)
44
+ def subscribe(pattern, span_name, options = {}, tracer = -> { Datadog.tracer }, &block)
45
45
  subscription(span_name, options, tracer, &block).tap do |subscription|
46
46
  subscription.subscribe(pattern)
47
47
  end
@@ -49,7 +49,7 @@ module Datadog
49
49
 
50
50
  # Creates a subscription without activating it.
51
51
  # Subscription is added to the inheriting class' list of subscriptions.
52
- def subscription(span_name, options = {}, tracer = Datadog.tracer, &block)
52
+ def subscription(span_name, options = {}, tracer = -> { Datadog.tracer }, &block)
53
53
  Subscription.new(tracer, span_name, options, &block).tap do |subscription|
54
54
  subscriptions << subscription
55
55
  end
@@ -5,7 +5,6 @@ module Datadog
5
5
  # An ActiveSupport::Notification subscription that wraps events with tracing.
6
6
  class Subscription
7
7
  attr_accessor \
8
- :tracer,
9
8
  :span_name,
10
9
  :options
11
10
 
@@ -18,6 +17,10 @@ module Datadog
18
17
  @callbacks = Callbacks.new
19
18
  end
20
19
 
20
+ def tracer
21
+ @tracer.is_a?(Proc) ? @tracer.call : @tracer
22
+ end
23
+
21
24
  # ActiveSupport 3.x calls this
22
25
  def call(name, start, finish, id, payload)
23
26
  start_span(name, id, payload, start)
@@ -7,13 +7,15 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the AWS integration
9
9
  class Settings < Contrib::Configuration::Settings
10
- option :analytics_enabled,
11
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
12
- lazy: true
10
+ option :analytics_enabled do |o|
11
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
12
+ o.lazy
13
+ end
13
14
 
14
- option :analytics_sample_rate,
15
- default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
16
- lazy: true
15
+ option :analytics_sample_rate do |o|
16
+ o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
17
+ o.lazy
18
+ end
17
19
 
18
20
  option :service_name, default: Ext::SERVICE_NAME
19
21
  end
@@ -1,23 +1,17 @@
1
- require 'ddtrace/environment'
2
- require 'ddtrace/configuration/options'
1
+ require 'ddtrace/configuration/base'
3
2
 
4
3
  module Datadog
5
4
  module Contrib
6
5
  module Configuration
7
6
  # Common settings for all integrations
8
7
  class Settings
9
- extend Datadog::Environment::Helpers
10
- include Datadog::Configuration::Options
8
+ include Datadog::Configuration::Base
11
9
 
12
- option :service_name
13
- option :tracer,
14
- default: -> { Datadog.tracer },
15
- lazy: true
16
10
  option :analytics_enabled, default: false
17
11
  option :analytics_sample_rate, default: 1.0
18
-
19
- def initialize(options = {})
20
- configure(options)
12
+ option :service_name
13
+ option :tracer do |o|
14
+ o.delegate_to { Datadog.tracer }
21
15
  end
22
16
 
23
17
  def configure(options = {})
@@ -7,13 +7,15 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the Dalli integration
9
9
  class Settings < Contrib::Configuration::Settings
10
- option :analytics_enabled,
11
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
12
- lazy: true
10
+ option :analytics_enabled do |o|
11
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
12
+ o.lazy
13
+ end
13
14
 
14
- option :analytics_sample_rate,
15
- default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
16
- lazy: true
15
+ option :analytics_sample_rate do |o|
16
+ o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
17
+ o.lazy
18
+ end
17
19
 
18
20
  option :service_name, default: Ext::SERVICE_NAME
19
21
  end
@@ -9,28 +9,11 @@ module Datadog
9
9
  # Instruments every interaction with the memcached server
10
10
  module Instrumentation
11
11
  def self.included(base)
12
- if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.0.0')
13
- base.class_eval do
14
- alias_method :request_without_datadog, :request
15
- remove_method :request
16
- include InstanceMethods
17
- end
18
- else
19
- base.send(:prepend, InstanceMethods)
20
- end
21
- end
22
-
23
- # Compatibility shim for Rubies not supporting `.prepend`
24
- module InstanceMethodsCompatibility
25
- def request(*args, &block)
26
- request_without_datadog(*args, &block)
27
- end
12
+ base.send(:prepend, InstanceMethods)
28
13
  end
29
14
 
30
15
  # InstanceMethods - implementing instrumentation
31
16
  module InstanceMethods
32
- include InstanceMethodsCompatibility unless Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0.0')
33
-
34
17
  def request(op, *args)
35
18
  tracer.trace(Datadog::Contrib::Dalli::Ext::SPAN_COMMAND) do |span|
36
19
  span.resource = op.to_s.upcase