ddtrace 0.20.0 → 0.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -3
  3. data/Rakefile +1 -1
  4. data/docs/GettingStarted.md +25 -7
  5. data/lib/ddtrace.rb +4 -31
  6. data/lib/ddtrace/configuration.rb +13 -46
  7. data/lib/ddtrace/configuration/{resolver.rb → dependency_resolver.rb} +2 -2
  8. data/lib/ddtrace/configuration/option.rb +32 -0
  9. data/lib/ddtrace/configuration/option_definition.rb +27 -0
  10. data/lib/ddtrace/configuration/option_definition_set.rb +18 -0
  11. data/lib/ddtrace/configuration/option_set.rb +6 -0
  12. data/lib/ddtrace/configuration/options.rb +93 -0
  13. data/lib/ddtrace/configuration/pin_setup.rb +1 -1
  14. data/lib/ddtrace/configuration/settings.rb +47 -0
  15. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +8 -0
  16. data/lib/ddtrace/contrib/active_model_serializers/event.rb +6 -0
  17. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +2 -2
  18. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +8 -0
  19. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +7 -0
  20. data/lib/ddtrace/contrib/active_record/events/sql.rb +6 -0
  21. data/lib/ddtrace/contrib/active_record/ext.rb +2 -3
  22. data/lib/ddtrace/contrib/analytics.rb +3 -4
  23. data/lib/ddtrace/contrib/aws/configuration/settings.rb +8 -0
  24. data/lib/ddtrace/contrib/aws/ext.rb +5 -6
  25. data/lib/ddtrace/contrib/aws/instrumentation.rb +7 -0
  26. data/lib/ddtrace/contrib/configuration/settings.rb +4 -14
  27. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +8 -0
  28. data/lib/ddtrace/contrib/dalli/ext.rb +3 -2
  29. data/lib/ddtrace/contrib/dalli/instrumentation.rb +7 -0
  30. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +1 -1
  31. data/lib/ddtrace/contrib/delayed_job/ext.rb +1 -1
  32. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +8 -0
  33. data/lib/ddtrace/contrib/elasticsearch/ext.rb +2 -2
  34. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +11 -1
  35. data/lib/ddtrace/contrib/excon/configuration/settings.rb +8 -0
  36. data/lib/ddtrace/contrib/excon/ext.rb +2 -1
  37. data/lib/ddtrace/contrib/excon/middleware.rb +15 -0
  38. data/lib/ddtrace/contrib/extensions.rb +62 -0
  39. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +8 -0
  40. data/lib/ddtrace/contrib/faraday/ext.rb +2 -1
  41. data/lib/ddtrace/contrib/faraday/middleware.rb +15 -0
  42. data/lib/ddtrace/contrib/grape/configuration/settings.rb +8 -0
  43. data/lib/ddtrace/contrib/grape/endpoint.rb +19 -0
  44. data/lib/ddtrace/contrib/grape/ext.rb +2 -2
  45. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +8 -0
  46. data/lib/ddtrace/contrib/graphql/ext.rb +2 -0
  47. data/lib/ddtrace/contrib/graphql/patcher.rb +8 -2
  48. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +8 -0
  49. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +9 -0
  50. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +4 -0
  51. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +4 -0
  52. data/lib/ddtrace/contrib/grpc/ext.rb +2 -1
  53. data/lib/ddtrace/contrib/http/configuration/settings.rb +8 -0
  54. data/lib/ddtrace/contrib/http/ext.rb +2 -1
  55. data/lib/ddtrace/contrib/http/instrumentation.rb +54 -19
  56. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +8 -0
  57. data/lib/ddtrace/contrib/mongodb/ext.rb +2 -2
  58. data/lib/ddtrace/contrib/mongodb/subscribers.rb +18 -0
  59. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +8 -0
  60. data/lib/ddtrace/contrib/mysql2/ext.rb +2 -2
  61. data/lib/ddtrace/contrib/mysql2/{client.rb → instrumentation.rb} +32 -12
  62. data/lib/ddtrace/contrib/mysql2/patcher.rb +2 -2
  63. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +1 -1
  64. data/lib/ddtrace/contrib/racecar/ext.rb +1 -1
  65. data/lib/ddtrace/contrib/rack/configuration/settings.rb +1 -1
  66. data/lib/ddtrace/contrib/rack/ext.rb +1 -1
  67. data/lib/ddtrace/contrib/rails/action_controller.rb +3 -0
  68. data/lib/ddtrace/contrib/rails/active_support.rb +1 -0
  69. data/lib/ddtrace/contrib/rails/configuration/settings.rb +8 -0
  70. data/lib/ddtrace/contrib/rails/ext.rb +2 -5
  71. data/lib/ddtrace/contrib/rails/utils.rb +17 -1
  72. data/lib/ddtrace/contrib/rake/configuration/settings.rb +1 -1
  73. data/lib/ddtrace/contrib/rake/ext.rb +1 -1
  74. data/lib/ddtrace/contrib/redis/configuration/settings.rb +8 -0
  75. data/lib/ddtrace/contrib/redis/ext.rb +4 -5
  76. data/lib/ddtrace/contrib/redis/tags.rb +24 -6
  77. data/lib/ddtrace/contrib/registerable.rb +1 -1
  78. data/lib/ddtrace/contrib/registry.rb +42 -0
  79. data/lib/ddtrace/contrib/resque/configuration/settings.rb +1 -1
  80. data/lib/ddtrace/contrib/resque/ext.rb +1 -1
  81. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +8 -0
  82. data/lib/ddtrace/contrib/rest_client/ext.rb +2 -1
  83. data/lib/ddtrace/contrib/rest_client/request_patch.rb +14 -0
  84. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -1
  85. data/lib/ddtrace/contrib/sequel/database.rb +2 -0
  86. data/lib/ddtrace/contrib/sequel/dataset.rb +2 -0
  87. data/lib/ddtrace/contrib/sequel/ext.rb +2 -2
  88. data/lib/ddtrace/contrib/sequel/utils.rb +32 -14
  89. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -1
  90. data/lib/ddtrace/contrib/shoryuken/ext.rb +1 -1
  91. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -1
  92. data/lib/ddtrace/contrib/sidekiq/ext.rb +1 -1
  93. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +8 -0
  94. data/lib/ddtrace/contrib/sinatra/ext.rb +3 -4
  95. data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -0
  96. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +12 -0
  97. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +1 -1
  98. data/lib/ddtrace/contrib/sucker_punch/ext.rb +1 -1
  99. data/lib/ddtrace/environment.rb +15 -0
  100. data/lib/ddtrace/ext/analytics.rb +1 -0
  101. data/lib/ddtrace/opentracer/global_tracer.rb +1 -1
  102. data/lib/ddtrace/propagation/distributed_headers.rb +14 -4
  103. data/lib/ddtrace/span.rb +4 -0
  104. data/lib/ddtrace/tracer.rb +6 -1
  105. data/lib/ddtrace/version.rb +1 -1
  106. metadata +14 -15
  107. data/lib/ddtrace/configurable.rb +0 -83
  108. data/lib/ddtrace/configuration/proxy.rb +0 -25
  109. data/lib/ddtrace/contrib/base.rb +0 -16
  110. data/lib/ddtrace/contrib/configuration/option.rb +0 -33
  111. data/lib/ddtrace/contrib/configuration/option_definition.rb +0 -29
  112. data/lib/ddtrace/contrib/configuration/option_definition_set.rb +0 -20
  113. data/lib/ddtrace/contrib/configuration/option_set.rb +0 -8
  114. data/lib/ddtrace/contrib/configuration/options.rb +0 -95
  115. data/lib/ddtrace/registry.rb +0 -42
  116. data/lib/ddtrace/registry/registerable.rb +0 -20
@@ -1,20 +0,0 @@
1
- require 'ddtrace/configuration/resolver'
2
-
3
- module Datadog
4
- module Contrib
5
- module Configuration
6
- # Represents a set of configuration option definitions for an integration
7
- class OptionDefinitionSet < Hash
8
- def dependency_order
9
- Datadog::Configuration::Resolver.new(dependency_graph).call
10
- end
11
-
12
- def dependency_graph
13
- each_with_object({}) do |(name, option), graph|
14
- graph[name] = option.depends_on
15
- end
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,8 +0,0 @@
1
- module Datadog
2
- module Contrib
3
- module Configuration
4
- class OptionSet < Hash
5
- end
6
- end
7
- end
8
- end
@@ -1,95 +0,0 @@
1
- require 'ddtrace/contrib/configuration/option'
2
- require 'ddtrace/contrib/configuration/option_set'
3
- require 'ddtrace/contrib/configuration/option_definition'
4
- require 'ddtrace/contrib/configuration/option_definition_set'
5
-
6
- module Datadog
7
- module Contrib
8
- module Configuration
9
- # Behavior for a configuration object that has options
10
- module Options
11
- def self.included(base)
12
- base.send(:extend, ClassMethods)
13
- base.send(:include, InstanceMethods)
14
- end
15
-
16
- # Class behavior for a configuration object with options
17
- module ClassMethods
18
- def options
19
- @options ||= begin
20
- # Allows for class inheritance of option definitions
21
- superclass <= Options ? superclass.options.dup : OptionDefinitionSet.new
22
- end
23
- end
24
-
25
- protected
26
-
27
- def option(name, meta = {}, &block)
28
- options[name] = OptionDefinition.new(name, meta, &block).tap do
29
- define_option_accessors(name)
30
- end
31
- end
32
-
33
- private
34
-
35
- def define_option_accessors(name)
36
- option_name = name
37
-
38
- define_method(option_name) do
39
- get_option(option_name)
40
- end
41
-
42
- define_method("#{option_name}=") do |value|
43
- set_option(option_name, value)
44
- end
45
- end
46
- end
47
-
48
- # Instance behavior for a configuration object with options
49
- module InstanceMethods
50
- def options
51
- @options ||= OptionSet.new
52
- end
53
-
54
- def set_option(name, value)
55
- add_option(name) unless options.key?(name)
56
- options[name].set(value)
57
- end
58
-
59
- def get_option(name)
60
- add_option(name) unless options.key?(name)
61
- options[name].get
62
- end
63
-
64
- def to_h
65
- options.each_with_object({}) do |(key, _), hash|
66
- hash[key] = get_option(key)
67
- end
68
- end
69
-
70
- def reset_options!
71
- options.values.each(&:reset)
72
- end
73
-
74
- private
75
-
76
- def add_option(name)
77
- assert_valid_option!(name)
78
- definition = self.class.options[name]
79
- Option.new(definition, self).tap do |option|
80
- options[name] = option
81
- end
82
- end
83
-
84
- def assert_valid_option!(name)
85
- unless self.class.options.key?(name)
86
- raise(InvalidOptionError, "#{self.class.name} doesn't define the option: #{name}")
87
- end
88
- end
89
- end
90
-
91
- InvalidOptionError = Class.new(StandardError)
92
- end
93
- end
94
- end
95
- end
@@ -1,42 +0,0 @@
1
- require_relative 'registry/registerable'
2
-
3
- module Datadog
4
- # Registry provides insertion/retrieval capabilities for integrations
5
- class Registry
6
- include Enumerable
7
-
8
- Entry = Struct.new(:name, :klass, :auto_patch)
9
-
10
- def initialize
11
- @data = {}
12
- @mutex = Mutex.new
13
- end
14
-
15
- def add(name, klass, auto_patch = false)
16
- @mutex.synchronize do
17
- @data[name] = Entry.new(name, klass, auto_patch).freeze
18
- end
19
- end
20
-
21
- def each
22
- @mutex.synchronize do
23
- @data.each { |_, entry| yield(entry) }
24
- end
25
- end
26
-
27
- def [](name)
28
- @mutex.synchronize do
29
- entry = @data[name]
30
- entry.klass if entry
31
- end
32
- end
33
-
34
- def to_h
35
- @mutex.synchronize do
36
- @data.each_with_object({}) do |(_, entry), hash|
37
- hash[entry.name] = entry.auto_patch
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,20 +0,0 @@
1
- module Datadog
2
- class Registry
3
- # Registerable provides a convenience method for self-registering
4
- module Registerable
5
- def self.included(base)
6
- base.singleton_class.send(:include, ClassMethods)
7
- end
8
-
9
- # ClassMethods
10
- module ClassMethods
11
- def register_as(name, options = {})
12
- registry = options.fetch(:registry, Datadog.registry)
13
- auto_patch = options.fetch(:auto_patch, false)
14
-
15
- registry.add(name, self, auto_patch)
16
- end
17
- end
18
- end
19
- end
20
- end