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
@@ -41,6 +41,7 @@ module Datadog
41
41
  # If data is a string, it is a literal template and we don't
42
42
  # want to record it.
43
43
  span.set_tag(Ext::TAG_TEMPLATE_NAME, data) if data.is_a? Symbol
44
+
44
45
  output = super
45
46
  end
46
47
  else
@@ -1,3 +1,4 @@
1
+ require 'ddtrace/contrib/analytics'
1
2
  require 'ddtrace/contrib/sinatra/ext'
2
3
  require 'ddtrace/contrib/sinatra/env'
3
4
  require 'ddtrace/contrib/sinatra/headers'
@@ -37,6 +38,9 @@ module Datadog
37
38
  span.set_tag(name, value) if span.get_tag(name).nil?
38
39
  end
39
40
 
41
+ # Set analytics sample rate
42
+ Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
43
+
40
44
  [status, headers, response_body]
41
45
  end
42
46
  end
@@ -47,6 +51,14 @@ module Datadog
47
51
  configuration[:tracer]
48
52
  end
49
53
 
54
+ def analytics_enabled?
55
+ Contrib::Analytics.enabled?(configuration[:analytics_enabled])
56
+ end
57
+
58
+ def analytics_sample_rate
59
+ configuration[:analytics_sample_rate]
60
+ end
61
+
50
62
  def configuration
51
63
  Datadog.configuration[:sinatra]
52
64
  end
@@ -8,7 +8,7 @@ module Datadog
8
8
  # Custom settings for the SuckerPunch integration
9
9
  class Settings < Contrib::Configuration::Settings
10
10
  option :analytics_enabled,
11
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENALBED, nil) },
11
+ default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
12
12
  lazy: true
13
13
 
14
14
  option :analytics_sample_rate,
@@ -4,7 +4,7 @@ module Datadog
4
4
  # SuckerPunch integration constants
5
5
  module Ext
6
6
  APP = 'sucker_punch'.freeze
7
- ENV_ANALYTICS_ENALBED = 'DD_SUCKER_PUNCH_ANALYTICS_ENABLED'.freeze
7
+ ENV_ANALYTICS_ENABLED = 'DD_SUCKER_PUNCH_ANALYTICS_ENABLED'.freeze
8
8
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_SUCKER_PUNCH_ANALYTICS_SAMPLE_RATE'.freeze
9
9
  SERVICE_NAME = 'sucker_punch'.freeze
10
10
  SPAN_PERFORM = 'sucker_punch.perform'.freeze
@@ -0,0 +1,15 @@
1
+ module Datadog
2
+ # Namespace for handling application environment
3
+ module Environment
4
+ # Defines helper methods for environment
5
+ module Helpers
6
+ def env_to_bool(var, default = nil)
7
+ ENV.key?(var) ? ENV[var].to_s.downcase == 'true' : default
8
+ end
9
+
10
+ def env_to_float(var, default = nil)
11
+ ENV.key?(var) ? ENV[var].to_f : default
12
+ end
13
+ end
14
+ end
15
+ end
@@ -2,6 +2,7 @@ module Datadog
2
2
  module Ext
3
3
  # Defines constants for trace analytics
4
4
  module Analytics
5
+ ENV_TRACE_ANALYTICS_ENABLED = 'DD_TRACE_ANALYTICS_ENABLED'.freeze
5
6
  # Tag for sample rate; used by agent to determine whether analytics event is emitted.
6
7
  TAG_SAMPLE_RATE = '_dd1.sr.eausr'.freeze
7
8
  end
@@ -6,7 +6,7 @@ module Datadog
6
6
  super.tap do
7
7
  if tracer.class <= Datadog::OpenTracer::Tracer
8
8
  # Update the Datadog global tracer, too.
9
- Datadog.instance_variable_set(:@tracer, tracer.datadog_tracer)
9
+ Datadog.configuration.tracer = tracer.datadog_tracer
10
10
  end
11
11
  end
12
12
  end
@@ -16,7 +16,8 @@ module Datadog
16
16
  return true if origin == 'synthetics' && trace_id
17
17
 
18
18
  # Sampling priority and origin are optional.
19
- trace_id && parent_id
19
+ # DEV: We want to explicitly return true/false here
20
+ trace_id && parent_id ? true : false
20
21
  end
21
22
 
22
23
  def trace_id
@@ -29,11 +30,19 @@ module Datadog
29
30
 
30
31
  def sampling_priority
31
32
  hdr = header(HTTP_HEADER_SAMPLING_PRIORITY)
33
+
32
34
  # It's important to make a difference between no header,
33
35
  # and a header defined to zero.
34
- return unless hdr
36
+ return if hdr.nil?
37
+
38
+ # Convert header to an integer
35
39
  value = hdr.to_i
36
- return if value < 0
40
+
41
+ # Ensure the parsed number is the same as the original string value
42
+ # e.g. We want to make sure to throw away `'nan'.to_i == 0`
43
+ # DEV: Ruby `.to_i` will return `0` if a number could not be parsed
44
+ return unless value.to_s == hdr.to_s
45
+
37
46
  value
38
47
  end
39
48
 
@@ -53,7 +62,8 @@ module Datadog
53
62
 
54
63
  def id(header)
55
64
  value = header(header).to_i
56
- return if value.zero? || value >= Span::MAX_ID
65
+ # Zero or greater than max allowed value of 2**64
66
+ return if value.zero? || value > Span::EXTERNAL_MAX_ID
57
67
  value < 0 ? value + 0x1_0000_0000_0000_0000 : value
58
68
  end
59
69
  end
@@ -20,6 +20,10 @@ module Datadog
20
20
  # and IDs need to be easy to port across various languages and platforms.
21
21
  MAX_ID = 2**63
22
22
 
23
+ # While we only generate 63-bit integers due to limitations in other languages, we support
24
+ # parsing 64-bit integers for distributed tracing since an upstream system may generate one
25
+ EXTERNAL_MAX_ID = 2**64
26
+
23
27
  attr_accessor :name, :service, :resource, :span_type,
24
28
  :start_time, :end_time,
25
29
  :span_id, :trace_id, :parent_id,
@@ -53,8 +53,13 @@ module Datadog
53
53
  end
54
54
 
55
55
  # Activate the debug mode providing more information related to tracer usage
56
+ # Default to Warn level unless using custom logger
56
57
  def self.debug_logging=(value)
57
- log.level = value ? Logger::DEBUG : Logger::WARN
58
+ if value
59
+ log.level = Logger::DEBUG
60
+ elsif log.is_a?(Datadog::Logger)
61
+ log.level = Logger::WARN
62
+ end
58
63
  end
59
64
 
60
65
  # Return if the debug mode is activated or not
@@ -1,7 +1,7 @@
1
1
  module Datadog
2
2
  module VERSION
3
3
  MAJOR = 0
4
- MINOR = 20
4
+ MINOR = 21
5
5
  PATCH = 0
6
6
  PRE = nil
7
7
 
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.20.0
4
+ version: 0.21.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-03-08 00:00:00.000000000 Z
11
+ date: 2019-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -302,11 +302,15 @@ files:
302
302
  - lib/ddtrace/augmentation/method_wrapping.rb
303
303
  - lib/ddtrace/augmentation/shim.rb
304
304
  - lib/ddtrace/buffer.rb
305
- - lib/ddtrace/configurable.rb
306
305
  - lib/ddtrace/configuration.rb
306
+ - lib/ddtrace/configuration/dependency_resolver.rb
307
+ - lib/ddtrace/configuration/option.rb
308
+ - lib/ddtrace/configuration/option_definition.rb
309
+ - lib/ddtrace/configuration/option_definition_set.rb
310
+ - lib/ddtrace/configuration/option_set.rb
311
+ - lib/ddtrace/configuration/options.rb
307
312
  - lib/ddtrace/configuration/pin_setup.rb
308
- - lib/ddtrace/configuration/proxy.rb
309
- - lib/ddtrace/configuration/resolver.rb
313
+ - lib/ddtrace/configuration/settings.rb
310
314
  - lib/ddtrace/context.rb
311
315
  - lib/ddtrace/context_flush.rb
312
316
  - lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb
@@ -338,7 +342,6 @@ files:
338
342
  - lib/ddtrace/contrib/aws/parsed_context.rb
339
343
  - lib/ddtrace/contrib/aws/patcher.rb
340
344
  - lib/ddtrace/contrib/aws/services.rb
341
- - lib/ddtrace/contrib/base.rb
342
345
  - lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb
343
346
  - lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb
344
347
  - lib/ddtrace/contrib/concurrent_ruby/ext.rb
@@ -346,11 +349,6 @@ files:
346
349
  - lib/ddtrace/contrib/concurrent_ruby/integration.rb
347
350
  - lib/ddtrace/contrib/concurrent_ruby/patcher.rb
348
351
  - lib/ddtrace/contrib/configurable.rb
349
- - lib/ddtrace/contrib/configuration/option.rb
350
- - lib/ddtrace/contrib/configuration/option_definition.rb
351
- - lib/ddtrace/contrib/configuration/option_definition_set.rb
352
- - lib/ddtrace/contrib/configuration/option_set.rb
353
- - lib/ddtrace/contrib/configuration/options.rb
354
352
  - lib/ddtrace/contrib/configuration/resolver.rb
355
353
  - lib/ddtrace/contrib/configuration/settings.rb
356
354
  - lib/ddtrace/contrib/dalli/configuration/settings.rb
@@ -374,6 +372,7 @@ files:
374
372
  - lib/ddtrace/contrib/excon/integration.rb
375
373
  - lib/ddtrace/contrib/excon/middleware.rb
376
374
  - lib/ddtrace/contrib/excon/patcher.rb
375
+ - lib/ddtrace/contrib/extensions.rb
377
376
  - lib/ddtrace/contrib/faraday/configuration/settings.rb
378
377
  - lib/ddtrace/contrib/faraday/ext.rb
379
378
  - lib/ddtrace/contrib/faraday/integration.rb
@@ -411,9 +410,9 @@ files:
411
410
  - lib/ddtrace/contrib/mongodb/parsers.rb
412
411
  - lib/ddtrace/contrib/mongodb/patcher.rb
413
412
  - lib/ddtrace/contrib/mongodb/subscribers.rb
414
- - lib/ddtrace/contrib/mysql2/client.rb
415
413
  - lib/ddtrace/contrib/mysql2/configuration/settings.rb
416
414
  - lib/ddtrace/contrib/mysql2/ext.rb
415
+ - lib/ddtrace/contrib/mysql2/instrumentation.rb
417
416
  - lib/ddtrace/contrib/mysql2/integration.rb
418
417
  - lib/ddtrace/contrib/mysql2/patcher.rb
419
418
  - lib/ddtrace/contrib/patchable.rb
@@ -457,6 +456,7 @@ files:
457
456
  - lib/ddtrace/contrib/redis/quantize.rb
458
457
  - lib/ddtrace/contrib/redis/tags.rb
459
458
  - lib/ddtrace/contrib/registerable.rb
459
+ - lib/ddtrace/contrib/registry.rb
460
460
  - lib/ddtrace/contrib/resque/configuration/settings.rb
461
461
  - lib/ddtrace/contrib/resque/ext.rb
462
462
  - lib/ddtrace/contrib/resque/integration.rb
@@ -502,6 +502,7 @@ files:
502
502
  - lib/ddtrace/contrib/sucker_punch/patcher.rb
503
503
  - lib/ddtrace/correlation.rb
504
504
  - lib/ddtrace/encoding.rb
505
+ - lib/ddtrace/environment.rb
505
506
  - lib/ddtrace/error.rb
506
507
  - lib/ddtrace/ext/analytics.rb
507
508
  - lib/ddtrace/ext/app_types.rb
@@ -540,8 +541,6 @@ files:
540
541
  - lib/ddtrace/provider.rb
541
542
  - lib/ddtrace/quantization/hash.rb
542
543
  - lib/ddtrace/quantization/http.rb
543
- - lib/ddtrace/registry.rb
544
- - lib/ddtrace/registry/registerable.rb
545
544
  - lib/ddtrace/sampler.rb
546
545
  - lib/ddtrace/span.rb
547
546
  - lib/ddtrace/sync_writer.rb
@@ -575,7 +574,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
575
574
  version: '0'
576
575
  requirements: []
577
576
  rubyforge_project:
578
- rubygems_version: 2.5.2.3
577
+ rubygems_version: 2.6.14
579
578
  signing_key:
580
579
  specification_version: 4
581
580
  summary: Datadog tracing code for your Ruby applications
@@ -1,83 +0,0 @@
1
- module Datadog
2
- InvalidOptionError = Class.new(StandardError)
3
- # Configurable provides configuration methods for a given class/module
4
- module Configurable
5
- IDENTITY = ->(x) { x }
6
-
7
- def self.included(base)
8
- base.singleton_class.send(:include, ClassMethods)
9
- end
10
-
11
- # ClassMethods
12
- module ClassMethods
13
- def set_option(name, value)
14
- __assert_valid!(name)
15
-
16
- __options[name][:value] = __options[name][:setter].call(value)
17
- __options[name][:set_flag] = true
18
- end
19
-
20
- def get_option(name)
21
- __assert_valid!(name)
22
-
23
- return __default_value(name) unless __options[name][:set_flag]
24
-
25
- __options[name][:value]
26
- end
27
-
28
- def to_h
29
- __options.each_with_object({}) do |(key, _), hash|
30
- hash[key] = get_option(key)
31
- end
32
- end
33
-
34
- def reset_options!
35
- __options.each do |name, meta|
36
- set_option(name, meta[:default])
37
- end
38
- end
39
-
40
- def sorted_options
41
- Configuration::Resolver.new(__dependency_graph).call
42
- end
43
-
44
- private
45
-
46
- def option(name, meta = {}, &block)
47
- name = name.to_sym
48
- meta[:setter] ||= (block || IDENTITY)
49
- meta[:depends_on] ||= []
50
- meta[:lazy] ||= false
51
- __options[name] = meta
52
- end
53
-
54
- def __options
55
- @__options ||= {}
56
- end
57
-
58
- def __assert_valid!(name)
59
- return if __options.key?(name)
60
- raise(InvalidOptionError, "#{__pretty_name} doesn't have the option: #{name}")
61
- end
62
-
63
- def __pretty_name
64
- entry = Datadog.registry.find { |el| el.klass == self }
65
-
66
- return entry.name if entry
67
-
68
- to_s
69
- end
70
-
71
- def __dependency_graph
72
- __options.each_with_object({}) do |(name, meta), graph|
73
- graph[name] = meta[:depends_on]
74
- end
75
- end
76
-
77
- def __default_value(name)
78
- return __options[name][:default].call if __options[name][:lazy]
79
- __options[name][:default]
80
- end
81
- end
82
- end
83
- end
@@ -1,25 +0,0 @@
1
- require 'forwardable'
2
-
3
- module Datadog
4
- class Configuration
5
- # Proxy provides a hash-like interface for fetching/setting configurations
6
- class Proxy
7
- extend Forwardable
8
-
9
- def initialize(integration)
10
- @integration = integration
11
- end
12
-
13
- def [](param)
14
- @integration.get_option(param)
15
- end
16
-
17
- def []=(param, value)
18
- @integration.set_option(param, value)
19
- end
20
-
21
- def_delegators :@integration, :to_h, :reset_options!
22
- def_delegators :to_h, :to_hash, :merge
23
- end
24
- end
25
- end
@@ -1,16 +0,0 @@
1
- require 'ddtrace/configurable'
2
- require 'ddtrace/patcher'
3
- require 'ddtrace/registry/registerable'
4
-
5
- module Datadog
6
- module Contrib
7
- # Base provides features that are shared across all integrations
8
- module Base
9
- def self.included(base)
10
- base.send(:include, Registry::Registerable)
11
- base.send(:include, Datadog::Configurable)
12
- base.send(:include, Datadog::Patcher)
13
- end
14
- end
15
- end
16
- end
@@ -1,33 +0,0 @@
1
- module Datadog
2
- module Contrib
3
- module Configuration
4
- # Represents an instance of an integration configuration option
5
- class Option
6
- attr_reader \
7
- :definition
8
-
9
- def initialize(definition, context)
10
- @definition = definition
11
- @context = context
12
- @value = nil
13
- @is_set = false
14
- end
15
-
16
- def set(value)
17
- @value = @context.instance_exec(value, &definition.setter).tap do
18
- @is_set = true
19
- end
20
- end
21
-
22
- def get
23
- return definition.default_value unless @is_set
24
- @value
25
- end
26
-
27
- def reset
28
- set(definition.default_value)
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,29 +0,0 @@
1
- module Datadog
2
- module Contrib
3
- module Configuration
4
- # Represents a definition for an integration configuration option
5
- class OptionDefinition
6
- IDENTITY = ->(x) { x }
7
-
8
- attr_reader \
9
- :default,
10
- :depends_on,
11
- :lazy,
12
- :name,
13
- :setter
14
-
15
- def initialize(name, meta = {}, &block)
16
- @default = meta[:default]
17
- @depends_on = meta[:depends_on] || []
18
- @lazy = meta[:lazy] || false
19
- @name = name.to_sym
20
- @setter = meta[:setter] || block || IDENTITY
21
- end
22
-
23
- def default_value
24
- lazy ? @default.call : @default
25
- end
26
- end
27
- end
28
- end
29
- end