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
@@ -7,13 +7,15 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the DelayedJob 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
@@ -7,13 +7,15 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the Elasticsearch 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 :quantize, default: {}
19
21
  option :service_name, default: Ext::SERVICE_NAME
@@ -7,13 +7,15 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the Ethon 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 :distributed_tracing, default: true
19
21
  option :service_name, default: Ext::SERVICE_NAME
@@ -18,10 +18,6 @@ module Datadog
18
18
  super && defined?(::Ethon::Easy)
19
19
  end
20
20
 
21
- def self.compatible?
22
- super && Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0.0')
23
- end
24
-
25
21
  def default_configuration
26
22
  Configuration::Settings.new
27
23
  end
@@ -7,16 +7,18 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the Excon 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 :distributed_tracing, default: true
19
- option :error_handler, default: nil
21
+ option :error_handler
20
22
  option :service_name, default: Ext::SERVICE_NAME
21
23
  option :split_by_domain, default: false
22
24
  end
@@ -17,7 +17,7 @@ module Datadog
17
17
 
18
18
  def initialize(stack, options = {})
19
19
  super(stack)
20
- @options = Datadog.configuration[:excon].to_h.merge(options)
20
+ @options = Datadog.configuration[:excon].options_hash.merge(options)
21
21
  end
22
22
 
23
23
  def request_call(datum)
@@ -12,13 +12,15 @@ module Datadog
12
12
  Datadog::Ext::HTTP::ERROR_RANGE.cover?(env[:status])
13
13
  end
14
14
 
15
- option :analytics_enabled,
16
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
17
- lazy: true
15
+ option :analytics_enabled do |o|
16
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
17
+ o.lazy
18
+ end
18
19
 
19
- option :analytics_sample_rate,
20
- default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
21
- lazy: true
20
+ option :analytics_sample_rate do |o|
21
+ o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
22
+ o.lazy
23
+ end
22
24
 
23
25
  option :distributed_tracing, default: true
24
26
  option :error_handler, default: DEFAULT_ERROR_HANDLER
@@ -14,7 +14,7 @@ module Datadog
14
14
 
15
15
  def initialize(app, options = {})
16
16
  super(app)
17
- @options = datadog_configuration.to_h.merge(options)
17
+ @options = datadog_configuration.options_hash.merge(options)
18
18
  setup_service!
19
19
  end
20
20
 
@@ -1,6 +1,7 @@
1
1
  require 'ddtrace/contrib/patcher'
2
2
  require 'ddtrace/ext/app_types'
3
3
  require 'ddtrace/contrib/faraday/ext'
4
+ require 'ddtrace/contrib/faraday/rack_builder'
4
5
 
5
6
  module Datadog
6
7
  module Contrib
@@ -21,7 +22,8 @@ module Datadog
21
22
  require 'ddtrace/contrib/faraday/middleware'
22
23
 
23
24
  add_pin!
24
- add_middleware!
25
+ register_middleware!
26
+ add_default_middleware!
25
27
  rescue StandardError => e
26
28
  Datadog::Tracer.log.error("Unable to apply Faraday integration: #{e}")
27
29
  end
@@ -38,10 +40,14 @@ module Datadog
38
40
  ).onto(::Faraday)
39
41
  end
40
42
 
41
- def add_middleware!
43
+ def register_middleware!
42
44
  ::Faraday::Middleware.register_middleware(ddtrace: Middleware)
43
45
  end
44
46
 
47
+ def add_default_middleware!
48
+ ::Faraday::RackBuilder.send(:prepend, RackBuilder)
49
+ end
50
+
45
51
  def get_option(option)
46
52
  Datadog.configuration[:faraday].get_option(option)
47
53
  end
@@ -0,0 +1,18 @@
1
+ module Datadog
2
+ module Contrib
3
+ module Faraday
4
+ # Handles installation of our middleware if the user has *not*
5
+ # already explicitly configured it for this correction.
6
+ #
7
+ # RackBuilder class was introduced in faraday 0.9.0:
8
+ # https://github.com/lostisland/faraday/commit/77d7546d6d626b91086f427c56bc2cdd951353b3
9
+ module RackBuilder
10
+ def adapter(*args)
11
+ use(:ddtrace) unless @handlers.any? { |h| h.klass == Middleware }
12
+
13
+ super
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -8,13 +8,15 @@ module Datadog
8
8
  module Configuration
9
9
  # Custom settings for the Grape integration
10
10
  class Settings < Contrib::Configuration::Settings
11
- option :analytics_enabled,
12
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) },
13
- lazy: true
11
+ option :analytics_enabled do |o|
12
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) }
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 :enabled, default: true
20
22
  option :service_name, default: Ext::SERVICE_NAME
@@ -4,48 +4,8 @@ module Datadog
4
4
  # Instrumentation for Grape::Endpoint
5
5
  module Instrumentation
6
6
  def self.included(base)
7
- if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.0.0')
8
- base.class_eval do
9
- # Class methods
10
- singleton_class.send(:include, ClassMethodsCompatibility)
11
- singleton_class.send(:include, ClassMethods)
12
-
13
- # Instance methods
14
- include InstanceMethodsCompatibility
15
- include InstanceMethods
16
- end
17
- else
18
- base.singleton_class.send(:prepend, ClassMethods)
19
- base.send(:prepend, InstanceMethods)
20
- end
21
- end
22
-
23
- # Compatibility shim for Rubies not supporting `.prepend`
24
- module ClassMethodsCompatibility
25
- def self.included(base)
26
- base.class_eval do
27
- alias_method :generate_api_method_without_datadog, :generate_api_method
28
- remove_method :generate_api_method
29
- end
30
- end
31
-
32
- def generate_api_method(*args, &block)
33
- generate_api_method_without_datadog(*args, &block)
34
- end
35
- end
36
-
37
- # Compatibility shim for Rubies not supporting `.prepend`
38
- module InstanceMethodsCompatibility
39
- def self.included(base)
40
- base.class_eval do
41
- alias_method :run_without_datadog, :run
42
- remove_method :run
43
- end
44
- end
45
-
46
- def run(*args, &block)
47
- run_without_datadog(*args, &block)
48
- end
7
+ base.singleton_class.send(:prepend, ClassMethods)
8
+ base.send(:prepend, InstanceMethods)
49
9
  end
50
10
 
51
11
  # ClassMethods - implementing instrumentation
@@ -8,13 +8,15 @@ module Datadog
8
8
  module Configuration
9
9
  # Custom settings for the GraphQL integration
10
10
  class Settings < Contrib::Configuration::Settings
11
- option :analytics_enabled,
12
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) },
13
- lazy: true
11
+ option :analytics_enabled do |o|
12
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) }
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 :schemas
20
22
  option :service_name, default: Ext::SERVICE_NAME
@@ -7,13 +7,15 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the gRPC 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
@@ -20,9 +20,7 @@ module Datadog
20
20
  end
21
21
 
22
22
  def self.compatible?
23
- super \
24
- && Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0') \
25
- && version >= Gem::Version.new('0.10.0')
23
+ super && version >= Gem::Version.new('0.10.0')
26
24
  end
27
25
 
28
26
  def default_configuration
@@ -7,13 +7,15 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the HTTP 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 :distributed_tracing, default: true
19
21
  option :service_name, default: Ext::SERVICE_NAME
@@ -12,15 +12,7 @@ module Datadog
12
12
  # Instrumentation for Net::HTTP
13
13
  module Instrumentation
14
14
  def self.included(base)
15
- if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.0.0')
16
- base.class_eval do
17
- # Instance methods
18
- include InstanceMethodsCompatibility
19
- include InstanceMethods
20
- end
21
- else
22
- base.send(:prepend, InstanceMethods)
23
- end
15
+ base.send(:prepend, InstanceMethods)
24
16
  end
25
17
 
26
18
  # Span hook invoked after request is completed.
@@ -34,20 +26,6 @@ module Datadog
34
26
  end
35
27
  end
36
28
 
37
- # Compatibility shim for Rubies not supporting `.prepend`
38
- module InstanceMethodsCompatibility
39
- def self.included(base)
40
- base.class_eval do
41
- alias_method :request_without_datadog, :request
42
- remove_method :request
43
- end
44
- end
45
-
46
- def request(*args, &block)
47
- request_without_datadog(*args, &block)
48
- end
49
- end
50
-
51
29
  # InstanceMethods - implementing instrumentation
52
30
  module InstanceMethods
53
31
  def request(req, body = nil, &block) # :yield: +response+
@@ -9,13 +9,15 @@ module Datadog
9
9
  class Settings < Contrib::Configuration::Settings
10
10
  DEFAULT_QUANTIZE = { show: [:collection, :database, :operation] }.freeze
11
11
 
12
- option :analytics_enabled,
13
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
14
- lazy: true
12
+ option :analytics_enabled do |o|
13
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
14
+ o.lazy
15
+ end
15
16
 
16
- option :analytics_sample_rate,
17
- default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
18
- lazy: true
17
+ option :analytics_sample_rate do |o|
18
+ o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
19
+ o.lazy
20
+ end
19
21
 
20
22
  option :quantize, default: DEFAULT_QUANTIZE
21
23
  option :service_name, default: Ext::SERVICE_NAME
@@ -7,13 +7,15 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the Mysql2 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
@@ -10,29 +10,7 @@ module Datadog
10
10
  # Mysql2::Client patch module
11
11
  module Instrumentation
12
12
  def self.included(base)
13
- if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.0.0')
14
- base.class_eval do
15
- # Instance methods
16
- include InstanceMethodsCompatibility
17
- include InstanceMethods
18
- end
19
- else
20
- base.send(:prepend, InstanceMethods)
21
- end
22
- end
23
-
24
- # Mysql2::Client patch 1.9.3 instance methods
25
- module InstanceMethodsCompatibility
26
- def self.included(base)
27
- base.class_eval do
28
- alias_method :query_without_datadog, :query
29
- remove_method :query
30
- end
31
- end
32
-
33
- def query(*args, &block)
34
- query_without_datadog(*args, &block)
35
- end
13
+ base.send(:prepend, InstanceMethods)
36
14
  end
37
15
 
38
16
  # Mysql2::Client patch instance methods