ddtrace 0.20.0 → 0.21.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 (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