ddtrace 0.28.0 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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