ddtrace 0.26.1 → 0.27.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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +153 -77
  3. data/.circleci/images/primary/{Dockerfile-1.9.3 → Dockerfile-2.5.6} +8 -8
  4. data/.circleci/images/primary/Dockerfile-2.6.4 +73 -0
  5. data/.github/CODEOWNERS +1 -0
  6. data/Appraisals +201 -94
  7. data/CHANGELOG.md +25 -8
  8. data/Rakefile +153 -47
  9. data/ddtrace.gemspec +1 -1
  10. data/docker-compose.yml +56 -26
  11. data/docs/GettingStarted.md +117 -14
  12. data/lib/ddtrace.rb +4 -0
  13. data/lib/ddtrace/analytics.rb +9 -39
  14. data/lib/ddtrace/configuration.rb +0 -19
  15. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +144 -0
  16. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +37 -0
  17. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +25 -0
  18. data/lib/ddtrace/contrib/action_pack/ext.rb +16 -0
  19. data/lib/ddtrace/contrib/action_pack/integration.rb +36 -0
  20. data/lib/ddtrace/contrib/action_pack/patcher.rb +29 -0
  21. data/lib/ddtrace/contrib/action_pack/utils.rb +36 -0
  22. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +24 -0
  23. data/lib/ddtrace/contrib/action_view/ext.rb +17 -0
  24. data/lib/ddtrace/contrib/action_view/instrumentation.rb +192 -0
  25. data/lib/ddtrace/contrib/action_view/integration.rb +43 -0
  26. data/lib/ddtrace/contrib/action_view/patcher.rb +47 -0
  27. data/lib/ddtrace/contrib/action_view/utils.rb +32 -0
  28. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +157 -0
  29. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +62 -0
  30. data/lib/ddtrace/contrib/active_support/cache/redis.rb +47 -0
  31. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +23 -0
  32. data/lib/ddtrace/contrib/active_support/ext.rb +21 -0
  33. data/lib/ddtrace/contrib/active_support/integration.rb +38 -0
  34. data/lib/ddtrace/contrib/active_support/patcher.rb +29 -0
  35. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +24 -0
  36. data/lib/ddtrace/contrib/ethon/easy_patch.rb +139 -0
  37. data/lib/ddtrace/contrib/ethon/ext.rb +15 -0
  38. data/lib/ddtrace/contrib/ethon/integration.rb +35 -0
  39. data/lib/ddtrace/contrib/ethon/multi_patch.rb +80 -0
  40. data/lib/ddtrace/contrib/ethon/patcher.rb +27 -0
  41. data/lib/ddtrace/contrib/patchable.rb +1 -1
  42. data/lib/ddtrace/contrib/rails/configuration/settings.rb +43 -6
  43. data/lib/ddtrace/contrib/rails/ext.rb +0 -15
  44. data/lib/ddtrace/contrib/rails/framework.rb +37 -6
  45. data/lib/ddtrace/contrib/rails/middlewares.rb +2 -1
  46. data/lib/ddtrace/contrib/rails/patcher.rb +0 -8
  47. data/lib/ddtrace/contrib/rails/utils.rb +0 -46
  48. data/lib/ddtrace/contrib/redis/patcher.rb +12 -19
  49. data/lib/ddtrace/correlation.rb +8 -12
  50. data/lib/ddtrace/forced_tracing.rb +10 -38
  51. data/lib/ddtrace/sampler.rb +20 -74
  52. data/lib/ddtrace/span.rb +3 -4
  53. data/lib/ddtrace/tracer.rb +4 -11
  54. data/lib/ddtrace/version.rb +2 -2
  55. metadata +32 -9
  56. data/lib/ddtrace/contrib/rails/action_controller.rb +0 -100
  57. data/lib/ddtrace/contrib/rails/action_controller_patch.rb +0 -78
  58. data/lib/ddtrace/contrib/rails/action_view.rb +0 -19
  59. data/lib/ddtrace/contrib/rails/active_support.rb +0 -67
  60. data/lib/ddtrace/contrib/rails/core_extensions.rb +0 -353
@@ -1,4 +1,5 @@
1
1
  require 'ddtrace/ext/http'
2
+ require 'ddtrace/contrib/action_pack/utils'
2
3
 
3
4
  module Datadog
4
5
  module Contrib
@@ -27,7 +28,7 @@ module Datadog
27
28
  # Only set error if it's supposed to be flagged as such
28
29
  # e.g. we don't want to flag 404s.
29
30
  # You can add custom errors via `config.action_dispatch.rescue_responses`
30
- span.set_error(e) if Utils.exception_is_error?(e)
31
+ span.set_error(e) if ActionPack::Utils.exception_is_error?(e)
31
32
  end
32
33
  raise e
33
34
  end
@@ -65,7 +65,6 @@ module Datadog
65
65
  # Finish configuring the tracer after the application is initialized.
66
66
  # We need to wait for some things, like application name, middleware stack, etc.
67
67
  setup_tracer
68
- instrument_rails
69
68
  end
70
69
  end
71
70
 
@@ -73,13 +72,6 @@ module Datadog
73
72
  def setup_tracer
74
73
  Datadog::Contrib::Rails::Framework.setup
75
74
  end
76
-
77
- # Add instrumentation to Rails components
78
- def instrument_rails
79
- Datadog::Contrib::Rails::ActionController.instrument
80
- Datadog::Contrib::Rails::ActionView.instrument
81
- Datadog::Contrib::Rails::ActiveSupport.instrument
82
- end
83
75
  end
84
76
  end
85
77
  end
@@ -5,26 +5,6 @@ module Datadog
5
5
  module Rails
6
6
  # common utilities for Rails
7
7
  module Utils
8
- # in Rails the template name includes the template full path
9
- # and it's better to avoid storing such information. This method
10
- # returns the relative path from `views/` or the template name
11
- # if a `views/` folder is not in the template full path. A wrong
12
- # usage ensures that this method will not crash the tracing system.
13
- def self.normalize_template_name(name)
14
- return if name.nil?
15
-
16
- base_path = datadog_configuration[:template_base_path]
17
- sections_view = name.split(base_path)
18
-
19
- if sections_view.length == 1
20
- name.split('/')[-1]
21
- else
22
- sections_view[-1]
23
- end
24
- rescue
25
- return name.to_s
26
- end
27
-
28
8
  def self.app_name
29
9
  if ::Rails::VERSION::MAJOR >= 6
30
10
  ::Rails.application.class.module_parent_name.underscore
@@ -34,32 +14,6 @@ module Datadog
34
14
  ::Rails.application.class.to_s.underscore
35
15
  end
36
16
  end
37
-
38
- def self.exception_is_error?(exception)
39
- if defined?(::ActionDispatch::ExceptionWrapper)
40
- # Gets the equivalent status code for the exception (not all are 5XX)
41
- # You can add custom errors via `config.action_dispatch.rescue_responses`
42
- status = ::ActionDispatch::ExceptionWrapper.status_code_for_exception(exception.class.name)
43
- # Only 5XX exceptions are actually errors (e.g. don't flag 404s)
44
- status.to_s.starts_with?('5')
45
- else
46
- true
47
- end
48
- end
49
-
50
- def self.set_analytics_sample_rate(span)
51
- if Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
52
- Contrib::Analytics.set_sample_rate(span, datadog_configuration[:analytics_sample_rate])
53
- end
54
- end
55
-
56
- class << self
57
- private
58
-
59
- def datadog_configuration
60
- Datadog.configuration[:rails]
61
- end
62
- end
63
17
  end
64
18
  end
65
19
  end
@@ -25,7 +25,6 @@ module Datadog
25
25
  require 'ddtrace/contrib/redis/quantize'
26
26
 
27
27
  patch_redis_client
28
- RailsCachePatcher.reload_cache_store if Datadog.registry[:rails].patcher.patched?
29
28
  rescue StandardError => e
30
29
  Datadog::Tracer.log.error("Unable to apply Redis integration: #{e}")
31
30
  end
@@ -36,24 +35,6 @@ module Datadog
36
35
  # rubocop:disable Metrics/BlockLength
37
36
  def patch_redis_client
38
37
  ::Redis::Client.class_eval do
39
- alias_method :initialize_without_datadog, :initialize
40
- Datadog::Patcher.without_warnings do
41
- remove_method :initialize
42
- end
43
-
44
- def initialize(*args)
45
- service = Datadog.configuration[:redis][:service_name]
46
- tracer = Datadog.configuration[:redis][:tracer]
47
- pin = Datadog::Pin.new(
48
- service,
49
- app: Ext::APP,
50
- app_type: Datadog::Ext::AppTypes::DB,
51
- tracer: tracer
52
- )
53
- pin.onto(self)
54
- initialize_without_datadog(*args)
55
- end
56
-
57
38
  alias_method :call_without_datadog, :call
58
39
  remove_method :call
59
40
  def call(*args, &block)
@@ -93,6 +74,18 @@ module Datadog
93
74
 
94
75
  response
95
76
  end
77
+
78
+ def datadog_pin
79
+ @datadog_pin ||= begin
80
+ pin = Datadog::Pin.new(
81
+ Datadog.configuration[:redis][:service_name],
82
+ app: Ext::APP,
83
+ app_type: Datadog::Ext::AppTypes::DB,
84
+ tracer: Datadog.configuration[:redis][:tracer]
85
+ )
86
+ pin.onto(self)
87
+ end
88
+ end
96
89
  end
97
90
  end
98
91
  end
@@ -3,19 +3,15 @@ module Datadog
3
3
  # e.g. Retrieve a correlation to the current trace for logging, etc.
4
4
  module Correlation
5
5
  # Struct representing correlation
6
- Identifier = Struct.new(:trace_id, :span_id).tap do |struct|
7
- # Do this #class_eval here for Ruby 1.9.3 support.
8
- # Ruby 2.0+ supports passing a block to Struct::new instead.
9
- struct.class_eval do
10
- def initialize(*args)
11
- super
12
- self.trace_id = trace_id || 0
13
- self.span_id = span_id || 0
14
- end
6
+ Identifier = Struct.new(:trace_id, :span_id) do
7
+ def initialize(*args)
8
+ super
9
+ self.trace_id = trace_id || 0
10
+ self.span_id = span_id || 0
11
+ end
15
12
 
16
- def to_s
17
- "dd.trace_id=#{trace_id} dd.span_id=#{span_id}"
18
- end
13
+ def to_s
14
+ "dd.trace_id=#{trace_id} dd.span_id=#{span_id}"
19
15
  end
20
16
  end.freeze
21
17
 
@@ -18,45 +18,17 @@ module Datadog
18
18
 
19
19
  # Extension for Datadog::Span
20
20
  module Span
21
- def self.included(base)
22
- if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.0.0')
23
- base.class_eval do
24
- # Instance methods
25
- include InstanceMethodsCompatibility
26
- include InstanceMethods
27
- end
21
+ def set_tag(key, value)
22
+ # Configure sampling priority if they give us a forced tracing tag
23
+ # DEV: Do not set if the value they give us is explicitly "false"
24
+ case key
25
+ when Ext::ManualTracing::TAG_KEEP
26
+ ForcedTracing.keep(self) unless value == false
27
+ when Ext::ManualTracing::TAG_DROP
28
+ ForcedTracing.drop(self) unless value == false
28
29
  else
29
- base.send(:prepend, InstanceMethods)
30
- end
31
- end
32
-
33
- # Compatibility shim for Rubies not supporting `.prepend`
34
- # NOTE: This patching strategy only works because it has been applied after
35
- # Datadog::Analytics::Span. Any changes will likely break this.
36
- module InstanceMethodsCompatibility
37
- def self.included(base)
38
- base.send(:alias_method, :set_tag_without_forced_tracing, :set_tag)
39
-
40
- define_method :set_tag do |*args, &block|
41
- set_tag_without_forced_tracing(*args, &block)
42
- end
43
- end
44
- end
45
-
46
- # Instance methods
47
- module InstanceMethods
48
- def set_tag(key, value)
49
- # Configure sampling priority if they give us a forced tracing tag
50
- # DEV: Do not set if the value they give us is explicitly "false"
51
- case key
52
- when Ext::ManualTracing::TAG_KEEP
53
- ForcedTracing.keep(self) unless value == false
54
- when Ext::ManualTracing::TAG_DROP
55
- ForcedTracing.drop(self) unless value == false
56
- else
57
- # Otherwise, set the tag normally.
58
- super if defined?(super)
59
- end
30
+ # Otherwise, set the tag normally.
31
+ super if defined?(super)
60
32
  end
61
33
  end
62
34
  end
@@ -64,110 +64,56 @@ module Datadog
64
64
  end
65
65
  end
66
66
 
67
- # Samples at different rates by key.
68
- class RateByKeySampler < Sampler
69
- attr_reader \
70
- :default_key
71
-
72
- def initialize(default_key, default_rate = 1.0, &block)
73
- raise ArgumentError, 'No resolver given!' unless block_given?
67
+ # \RateByServiceSampler samples different services at different rates
68
+ class RateByServiceSampler < Sampler
69
+ DEFAULT_KEY = 'service:,env:'.freeze
74
70
 
75
- @default_key = default_key
76
- @resolver = block
71
+ def initialize(rate = 1.0, opts = {})
72
+ @env = opts.fetch(:env, Datadog.tracer.tags[:env])
77
73
  @mutex = Mutex.new
78
- @samplers = {}
79
-
80
- set_rate(default_key, default_rate)
81
- end
82
-
83
- def resolve(span)
84
- @resolver.call(span)
85
- end
86
-
87
- def default_sampler
88
- @samplers[default_key]
74
+ @fallback = RateSampler.new(rate)
75
+ @sampler = { DEFAULT_KEY => @fallback }
89
76
  end
90
77
 
91
78
  def sample?(span)
92
- key = resolve(span)
79
+ key = key_for(span)
93
80
 
94
81
  @mutex.synchronize do
95
- @samplers.fetch(key, default_sampler).sample?(span)
82
+ @sampler.fetch(key, @fallback).sample?(span)
96
83
  end
97
84
  end
98
85
 
99
86
  def sample!(span)
100
- key = resolve(span)
87
+ key = key_for(span)
101
88
 
102
89
  @mutex.synchronize do
103
- @samplers.fetch(key, default_sampler).sample!(span)
90
+ @sampler.fetch(key, @fallback).sample!(span)
104
91
  end
105
92
  end
106
93
 
107
94
  def sample_rate(span)
108
- key = resolve(span)
109
-
110
- @mutex.synchronize do
111
- @samplers.fetch(key, default_sampler).sample_rate
112
- end
113
- end
95
+ key = key_for(span)
114
96
 
115
- def update(key, rate)
116
97
  @mutex.synchronize do
117
- set_rate(key, rate)
98
+ @sampler.fetch(key, @fallback).sample_rate
118
99
  end
119
100
  end
120
101
 
121
- def update_all(rate_by_key)
122
- @mutex.synchronize do
123
- rate_by_key.each { |key, rate| set_rate(key, rate) }
124
- end
125
- end
126
-
127
- def delete(key)
102
+ def update(rate_by_service)
128
103
  @mutex.synchronize do
129
- @samplers.delete(key)
130
- end
131
- end
104
+ @sampler.delete_if { |key, _| key != DEFAULT_KEY && !rate_by_service.key?(key) }
132
105
 
133
- def delete_if(&block)
134
- @mutex.synchronize do
135
- @samplers.delete_if(&block)
106
+ rate_by_service.each do |key, rate|
107
+ @sampler[key] ||= RateSampler.new(rate)
108
+ @sampler[key].sample_rate = rate
109
+ end
136
110
  end
137
111
  end
138
112
 
139
113
  private
140
114
 
141
- def set_rate(key, rate)
142
- @samplers[key] ||= RateSampler.new(rate)
143
- @samplers[key].sample_rate = rate
144
- end
145
- end
146
-
147
- # \RateByServiceSampler samples different services at different rates
148
- class RateByServiceSampler < RateByKeySampler
149
- DEFAULT_KEY = 'service:,env:'.freeze
150
-
151
- def initialize(default_rate = 1.0, options = {})
152
- super(DEFAULT_KEY, default_rate, &method(:key_for))
153
- @env = options[:env]
154
- end
155
-
156
- def update(rate_by_service)
157
- # Remove any old services
158
- delete_if { |key, _| key != DEFAULT_KEY && !rate_by_service.key?(key) }
159
-
160
- # Update each service rate
161
- update_all(rate_by_service)
162
- end
163
-
164
- private
165
-
166
115
  def key_for(span)
167
- # Resolve env dynamically, if Proc is given.
168
- env = @env.is_a?(Proc) ? @env.call : @env
169
-
170
- "service:#{span.service},env:#{env}"
116
+ "service:#{span.service},env:#{@env}"
171
117
  end
172
118
  end
173
119
 
data/lib/ddtrace/span.rb CHANGED
@@ -16,6 +16,9 @@ module Datadog
16
16
  #
17
17
  # rubocop:disable Metrics/ClassLength
18
18
  class Span
19
+ prepend Analytics::Span
20
+ prepend ForcedTracing::Span
21
+
19
22
  # The max value for a \Span identifier.
20
23
  # Span and trace identifiers should be strictly positive and strictly inferior to this limit.
21
24
  #
@@ -255,7 +258,3 @@ module Datadog
255
258
  end
256
259
  end
257
260
  end
258
-
259
- # Include extensions after Span (for Ruby 1.9 compatibility)
260
- Datadog::Span.send(:include, Datadog::Analytics::Span)
261
- Datadog::Span.send(:include, Datadog::ForcedTracing::Span)
@@ -120,9 +120,6 @@ module Datadog
120
120
 
121
121
  @mutex = Mutex.new
122
122
  @tags = {}
123
-
124
- # Enable priority sampling by default
125
- activate_priority_sampling!(@sampler)
126
123
  end
127
124
 
128
125
  # Updates the current \Tracer instance, so that the tracer can be configured after the
@@ -220,16 +217,15 @@ module Datadog
220
217
 
221
218
  tags = options.fetch(:tags, {})
222
219
 
223
- opts = options.select do |k, _v|
220
+ span_options = options.select do |k, _v|
224
221
  # Filter options, we want no side effects with unexpected args.
225
- # Plus, this documents the code (Ruby 2 named args would be better but we're Ruby 1.9 compatible)
226
222
  ALLOWED_SPAN_OPTIONS.include?(k)
227
223
  end
228
224
 
229
225
  ctx, parent = guess_context_and_parent(options[:child_of])
230
- opts[:context] = ctx unless ctx.nil?
226
+ span_options[:context] = ctx unless ctx.nil?
231
227
 
232
- span = Span.new(self, name, opts)
228
+ span = Span.new(self, name, span_options)
233
229
  if parent.nil?
234
230
  # root span
235
231
  @sampler.sample!(span)
@@ -444,10 +440,7 @@ module Datadog
444
440
  @sampler = if base_sampler.is_a?(PrioritySampler)
445
441
  base_sampler
446
442
  else
447
- PrioritySampler.new(
448
- base_sampler: base_sampler,
449
- post_sampler: Datadog::RateByServiceSampler.new(1.0, env: proc { tags[:env] })
450
- )
443
+ PrioritySampler.new(base_sampler: base_sampler)
451
444
  end
452
445
  end
453
446
 
@@ -1,8 +1,8 @@
1
1
  module Datadog
2
2
  module VERSION
3
3
  MAJOR = 0
4
- MINOR = 26
5
- PATCH = 1
4
+ MINOR = 27
5
+ PATCH = 0
6
6
  PRE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ddtrace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.1
4
+ version: 0.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-26 00:00:00.000000000 Z
11
+ date: 2019-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -287,14 +287,16 @@ extensions: []
287
287
  extra_rdoc_files: []
288
288
  files:
289
289
  - ".circleci/config.yml"
290
- - ".circleci/images/primary/Dockerfile-1.9.3"
291
290
  - ".circleci/images/primary/Dockerfile-2.0.0"
292
291
  - ".circleci/images/primary/Dockerfile-2.1.10"
293
292
  - ".circleci/images/primary/Dockerfile-2.2.10"
294
293
  - ".circleci/images/primary/Dockerfile-2.3.8"
295
294
  - ".circleci/images/primary/Dockerfile-2.4.6"
295
+ - ".circleci/images/primary/Dockerfile-2.5.6"
296
+ - ".circleci/images/primary/Dockerfile-2.6.4"
296
297
  - ".dockerignore"
297
298
  - ".env"
299
+ - ".github/CODEOWNERS"
298
300
  - ".gitignore"
299
301
  - ".rspec"
300
302
  - ".rubocop.yml"
@@ -330,6 +332,19 @@ files:
330
332
  - lib/ddtrace/configuration/settings.rb
331
333
  - lib/ddtrace/context.rb
332
334
  - lib/ddtrace/context_flush.rb
335
+ - lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb
336
+ - lib/ddtrace/contrib/action_pack/action_controller/patcher.rb
337
+ - lib/ddtrace/contrib/action_pack/configuration/settings.rb
338
+ - lib/ddtrace/contrib/action_pack/ext.rb
339
+ - lib/ddtrace/contrib/action_pack/integration.rb
340
+ - lib/ddtrace/contrib/action_pack/patcher.rb
341
+ - lib/ddtrace/contrib/action_pack/utils.rb
342
+ - lib/ddtrace/contrib/action_view/configuration/settings.rb
343
+ - lib/ddtrace/contrib/action_view/ext.rb
344
+ - lib/ddtrace/contrib/action_view/instrumentation.rb
345
+ - lib/ddtrace/contrib/action_view/integration.rb
346
+ - lib/ddtrace/contrib/action_view/patcher.rb
347
+ - lib/ddtrace/contrib/action_view/utils.rb
333
348
  - lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb
334
349
  - lib/ddtrace/contrib/active_model_serializers/event.rb
335
350
  - lib/ddtrace/contrib/active_model_serializers/events.rb
@@ -348,9 +363,16 @@ files:
348
363
  - lib/ddtrace/contrib/active_record/integration.rb
349
364
  - lib/ddtrace/contrib/active_record/patcher.rb
350
365
  - lib/ddtrace/contrib/active_record/utils.rb
366
+ - lib/ddtrace/contrib/active_support/cache/instrumentation.rb
367
+ - lib/ddtrace/contrib/active_support/cache/patcher.rb
368
+ - lib/ddtrace/contrib/active_support/cache/redis.rb
369
+ - lib/ddtrace/contrib/active_support/configuration/settings.rb
370
+ - lib/ddtrace/contrib/active_support/ext.rb
371
+ - lib/ddtrace/contrib/active_support/integration.rb
351
372
  - lib/ddtrace/contrib/active_support/notifications/event.rb
352
373
  - lib/ddtrace/contrib/active_support/notifications/subscriber.rb
353
374
  - lib/ddtrace/contrib/active_support/notifications/subscription.rb
375
+ - lib/ddtrace/contrib/active_support/patcher.rb
354
376
  - lib/ddtrace/contrib/analytics.rb
355
377
  - lib/ddtrace/contrib/aws/configuration/settings.rb
356
378
  - lib/ddtrace/contrib/aws/ext.rb
@@ -384,6 +406,12 @@ files:
384
406
  - lib/ddtrace/contrib/elasticsearch/integration.rb
385
407
  - lib/ddtrace/contrib/elasticsearch/patcher.rb
386
408
  - lib/ddtrace/contrib/elasticsearch/quantize.rb
409
+ - lib/ddtrace/contrib/ethon/configuration/settings.rb
410
+ - lib/ddtrace/contrib/ethon/easy_patch.rb
411
+ - lib/ddtrace/contrib/ethon/ext.rb
412
+ - lib/ddtrace/contrib/ethon/integration.rb
413
+ - lib/ddtrace/contrib/ethon/multi_patch.rb
414
+ - lib/ddtrace/contrib/ethon/patcher.rb
387
415
  - lib/ddtrace/contrib/excon/configuration/settings.rb
388
416
  - lib/ddtrace/contrib/excon/ext.rb
389
417
  - lib/ddtrace/contrib/excon/integration.rb
@@ -448,12 +476,7 @@ files:
448
476
  - lib/ddtrace/contrib/rack/middlewares.rb
449
477
  - lib/ddtrace/contrib/rack/patcher.rb
450
478
  - lib/ddtrace/contrib/rack/request_queue.rb
451
- - lib/ddtrace/contrib/rails/action_controller.rb
452
- - lib/ddtrace/contrib/rails/action_controller_patch.rb
453
- - lib/ddtrace/contrib/rails/action_view.rb
454
- - lib/ddtrace/contrib/rails/active_support.rb
455
479
  - lib/ddtrace/contrib/rails/configuration/settings.rb
456
- - lib/ddtrace/contrib/rails/core_extensions.rb
457
480
  - lib/ddtrace/contrib/rails/ext.rb
458
481
  - lib/ddtrace/contrib/rails/framework.rb
459
482
  - lib/ddtrace/contrib/rails/integration.rb
@@ -623,7 +646,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
623
646
  requirements:
624
647
  - - ">="
625
648
  - !ruby/object:Gem::Version
626
- version: 1.9.1
649
+ version: 2.0.0
627
650
  required_rubygems_version: !ruby/object:Gem::Requirement
628
651
  requirements:
629
652
  - - ">="