ddtrace 0.42.0 → 0.43.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.
- checksums.yaml +5 -5
- data/.github/workflows/add-milestone-to-pull-requests.yml +42 -0
- data/.github/workflows/create-next-milestone.yml +20 -0
- data/.simplecov +1 -1
- data/Appraisals +160 -132
- data/CHANGELOG.md +36 -0
- data/CONTRIBUTING.md +1 -1
- data/Rakefile +39 -0
- data/docs/DevelopmentGuide.md +2 -2
- data/docs/GettingStarted.md +71 -1
- data/lib/ddtrace.rb +2 -0
- data/lib/ddtrace/configuration.rb +20 -4
- data/lib/ddtrace/configuration/settings.rb +4 -2
- data/lib/ddtrace/context.rb +18 -0
- data/lib/ddtrace/context_provider.rb +12 -1
- data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +104 -3
- data/lib/ddtrace/contrib/active_support/cache/patcher.rb +21 -0
- data/lib/ddtrace/contrib/active_support/ext.rb +3 -0
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +10 -0
- data/lib/ddtrace/contrib/aws/instrumentation.rb +2 -1
- data/lib/ddtrace/contrib/aws/patcher.rb +0 -1
- data/lib/ddtrace/contrib/configurable.rb +2 -0
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +4 -5
- data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +38 -0
- data/lib/ddtrace/contrib/cucumber/ext.rb +19 -0
- data/lib/ddtrace/contrib/cucumber/formatter.rb +104 -0
- data/lib/ddtrace/contrib/cucumber/instrumentation.rb +24 -0
- data/lib/ddtrace/contrib/cucumber/integration.rb +40 -0
- data/lib/ddtrace/contrib/cucumber/patcher.rb +23 -0
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +3 -1
- data/lib/ddtrace/contrib/excon/middleware.rb +7 -1
- data/lib/ddtrace/contrib/faraday/patcher.rb +1 -1
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -0
- data/lib/ddtrace/contrib/grape/endpoint.rb +19 -4
- data/lib/ddtrace/contrib/http/instrumentation.rb +2 -2
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +2 -2
- data/lib/ddtrace/contrib/kafka/event.rb +1 -1
- data/lib/ddtrace/contrib/que/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/que/tracer.rb +2 -1
- data/lib/ddtrace/contrib/rails/patcher.rb +5 -2
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/resque/resque_job.rb +1 -1
- data/lib/ddtrace/contrib/rspec/configuration/settings.rb +38 -0
- data/lib/ddtrace/contrib/rspec/example.rb +61 -0
- data/lib/ddtrace/contrib/rspec/example_group.rb +61 -0
- data/lib/ddtrace/contrib/rspec/ext.rb +19 -0
- data/lib/ddtrace/contrib/rspec/integration.rb +41 -0
- data/lib/ddtrace/contrib/rspec/patcher.rb +25 -0
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +4 -1
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +4 -1
- data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/sneakers/tracer.rb +17 -20
- data/lib/ddtrace/contrib/status_code_matcher.rb +67 -0
- data/lib/ddtrace/ext/app_types.rb +1 -0
- data/lib/ddtrace/ext/ci.rb +265 -0
- data/lib/ddtrace/ext/distributed.rb +8 -2
- data/lib/ddtrace/ext/git.rb +12 -0
- data/lib/ddtrace/ext/runtime.rb +1 -0
- data/lib/ddtrace/ext/test.rb +24 -0
- data/lib/ddtrace/runtime/identity.rb +4 -5
- data/lib/ddtrace/sampling/rate_limiter.rb +65 -16
- data/lib/ddtrace/tracer.rb +14 -1
- data/lib/ddtrace/utils.rb +10 -11
- data/lib/ddtrace/utils/forking.rb +52 -0
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace/writer.rb +19 -1
- metadata +23 -31
@@ -20,8 +20,14 @@ module Datadog
|
|
20
20
|
PROPAGATION_STYLE_DATADOG = 'Datadog'.freeze
|
21
21
|
PROPAGATION_STYLE_B3 = 'B3'.freeze
|
22
22
|
PROPAGATION_STYLE_B3_SINGLE_HEADER = 'B3 single header'.freeze
|
23
|
-
|
24
|
-
|
23
|
+
PROPAGATION_STYLE_INJECT_ENV = 'DD_PROPAGATION_STYLE_INJECT'.freeze
|
24
|
+
PROPAGATION_STYLE_EXTRACT_ENV = 'DD_PROPAGATION_STYLE_EXTRACT'.freeze
|
25
|
+
# Note: the below inject/extract values are deprecated and were defined erronously
|
26
|
+
# they were never part of the datadog language client standard or documentation
|
27
|
+
# some users may already be relying on them, but we should look to remove these in the future
|
28
|
+
# or before 1.0.
|
29
|
+
PROPAGATION_INJECT_STYLE_ENV_OLD = 'DD_PROPAGATION_INJECT_STYLE'.freeze
|
30
|
+
PROPAGATION_EXTRACT_STYLE_ENV_OLD = 'DD_PROPAGATION_EXTRACT_STYLE'.freeze
|
25
31
|
|
26
32
|
# gRPC metadata keys for distributed tracing. https://github.com/grpc/grpc-go/blob/v1.10.x/Documentation/grpc-metadata.md
|
27
33
|
GRPC_METADATA_TRACE_ID = 'x-datadog-trace-id'.freeze
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Datadog
|
2
|
+
module Ext
|
3
|
+
# Defines constants for Git tags
|
4
|
+
module Git
|
5
|
+
TAG_BRANCH = 'git.branch'.freeze
|
6
|
+
TAG_COMMIT_SHA = 'git.commit.sha'.freeze
|
7
|
+
TAG_DEPRECATED_COMMIT_SHA = 'git.commit_sha'.freeze
|
8
|
+
TAG_REPOSITORY_URL = 'git.repository_url'.freeze
|
9
|
+
TAG_TAG = 'git.tag'.freeze
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/ddtrace/ext/runtime.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
module Datadog
|
2
|
+
module Ext
|
3
|
+
# Defines constants for test tags
|
4
|
+
module Test
|
5
|
+
TAG_ARGUMENTS = 'test.arguments'.freeze
|
6
|
+
TAG_FRAMEWORK = 'test.framework'.freeze
|
7
|
+
TAG_NAME = 'test.name'.freeze
|
8
|
+
TAG_SKIP_REASON = 'test.skip_reason'.freeze
|
9
|
+
TAG_STATUS = 'test.status'.freeze
|
10
|
+
TAG_SUITE = 'test.suite'.freeze
|
11
|
+
TAG_TRAITS = 'test.traits'.freeze
|
12
|
+
TAG_TYPE = 'test.type'.freeze
|
13
|
+
|
14
|
+
# TODO: is there a better place for SPAN_KIND?
|
15
|
+
TAG_SPAN_KIND = 'span.kind'.freeze
|
16
|
+
|
17
|
+
module Status
|
18
|
+
PASS = 'pass'.freeze
|
19
|
+
FAIL = 'fail'.freeze
|
20
|
+
SKIP = 'skip'.freeze
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,22 +1,21 @@
|
|
1
1
|
require 'securerandom'
|
2
2
|
require 'ddtrace/ext/runtime'
|
3
|
+
require 'ddtrace/utils/forking'
|
3
4
|
|
4
5
|
module Datadog
|
5
6
|
module Runtime
|
6
7
|
# For runtime identity
|
7
8
|
module Identity
|
9
|
+
extend Datadog::Utils::Forking
|
10
|
+
|
8
11
|
module_function
|
9
12
|
|
10
13
|
# Retrieves number of classes from runtime
|
11
14
|
def id
|
12
|
-
@pid ||= Process.pid
|
13
15
|
@id ||= SecureRandom.uuid
|
14
16
|
|
15
17
|
# Check if runtime has changed, e.g. forked.
|
16
|
-
|
17
|
-
@pid = Process.pid
|
18
|
-
@id = SecureRandom.uuid
|
19
|
-
end
|
18
|
+
after_fork! { @id = SecureRandom.uuid }
|
20
19
|
|
21
20
|
@id
|
22
21
|
end
|
@@ -38,6 +38,10 @@ module Datadog
|
|
38
38
|
@tokens = max_tokens
|
39
39
|
@total_messages = 0
|
40
40
|
@conforming_messages = 0
|
41
|
+
@prev_conforming_messages = nil
|
42
|
+
@prev_total_messages = nil
|
43
|
+
@current_window = nil
|
44
|
+
|
41
45
|
@last_refill = Utils::Time.get_time
|
42
46
|
end
|
43
47
|
|
@@ -47,28 +51,17 @@ module Datadog
|
|
47
51
|
# If it does, return +true+ and remove +size+
|
48
52
|
# tokens from the bucket.
|
49
53
|
# If it does not, return +false+ without affecting
|
50
|
-
# the tokens
|
54
|
+
# the tokens from the bucket.
|
51
55
|
#
|
52
56
|
# @return [Boolean] +true+ if message conforms with current bucket limit
|
53
57
|
def allow?(size)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
refill_since_last_message
|
58
|
-
|
59
|
-
increment_total_count
|
60
|
-
|
61
|
-
return false if @tokens < size
|
62
|
-
|
63
|
-
increment_conforming_count
|
64
|
-
|
65
|
-
@tokens -= size
|
66
|
-
|
67
|
-
true
|
58
|
+
allowed = should_allow?(size)
|
59
|
+
update_rate_counts(allowed)
|
60
|
+
allowed
|
68
61
|
end
|
69
62
|
|
70
63
|
# Ratio of 'conformance' per 'total messages' checked
|
71
|
-
#
|
64
|
+
# averaged for the past 2 buckets
|
72
65
|
#
|
73
66
|
# Returns +1.0+ when no messages have been checked yet.
|
74
67
|
#
|
@@ -77,6 +70,20 @@ module Datadog
|
|
77
70
|
return 0.0 if @rate.zero?
|
78
71
|
return 1.0 if @rate < 0 || @total_messages.zero?
|
79
72
|
|
73
|
+
return current_window_rate if @prev_conforming_messages.nil? || @prev_total_messages.nil?
|
74
|
+
|
75
|
+
(@conforming_messages.to_f + @prev_conforming_messages.to_f) / (@total_messages + @prev_total_messages)
|
76
|
+
end
|
77
|
+
|
78
|
+
# Ratio of 'conformance' per 'total messages' checked
|
79
|
+
# on this bucket
|
80
|
+
#
|
81
|
+
# Returns +1.0+ when no messages have been checked yet.
|
82
|
+
#
|
83
|
+
# @return [Float] Conformance ratio, between +[0,1]+
|
84
|
+
def current_window_rate
|
85
|
+
return 1.0 if @total_messages.zero?
|
86
|
+
|
80
87
|
@conforming_messages.to_f / @total_messages
|
81
88
|
end
|
82
89
|
|
@@ -91,6 +98,8 @@ module Datadog
|
|
91
98
|
now = Utils::Time.get_time
|
92
99
|
elapsed = now - @last_refill
|
93
100
|
|
101
|
+
# Update the number of available tokens, but ensure we do not exceed the max
|
102
|
+
# we return the min of tokens + rate*elapsed, or max tokens
|
94
103
|
refill_tokens(@rate * elapsed)
|
95
104
|
|
96
105
|
@last_refill = now
|
@@ -108,6 +117,46 @@ module Datadog
|
|
108
117
|
def increment_conforming_count
|
109
118
|
@conforming_messages += 1
|
110
119
|
end
|
120
|
+
|
121
|
+
def should_allow?(size)
|
122
|
+
# rate limit of 0 blocks everything
|
123
|
+
return false if @rate.zero?
|
124
|
+
|
125
|
+
# negative rate limit disables rate limiting
|
126
|
+
return true if @rate < 0
|
127
|
+
|
128
|
+
refill_since_last_message
|
129
|
+
|
130
|
+
# if tokens < 1 we don't allow?
|
131
|
+
return false if @tokens < size
|
132
|
+
|
133
|
+
@tokens -= size
|
134
|
+
|
135
|
+
true
|
136
|
+
end
|
137
|
+
|
138
|
+
# Sets and Updates the past two 1 second windows for which
|
139
|
+
# the rate limiter must compute it's rate over and updates
|
140
|
+
# the total count, and conforming message count if +allowed+
|
141
|
+
def update_rate_counts(allowed)
|
142
|
+
now = Utils::Time.get_time
|
143
|
+
|
144
|
+
# No tokens have been seen yet, start a new window
|
145
|
+
if @current_window.nil?
|
146
|
+
@current_window = now
|
147
|
+
# If more than 1 second has past since last window, reset
|
148
|
+
elsif now - @current_window >= 1
|
149
|
+
@prev_conforming_messages = @conforming_messages
|
150
|
+
@prev_total_messages = @total_messages
|
151
|
+
@conforming_messages = 0
|
152
|
+
@total_messages = 0
|
153
|
+
@current_window = now
|
154
|
+
end
|
155
|
+
|
156
|
+
increment_conforming_count if allowed
|
157
|
+
|
158
|
+
increment_total_count
|
159
|
+
end
|
111
160
|
end
|
112
161
|
|
113
162
|
# \RateLimiter that accepts all resources,
|
data/lib/ddtrace/tracer.rb
CHANGED
@@ -7,6 +7,7 @@ require 'ddtrace/span'
|
|
7
7
|
require 'ddtrace/context'
|
8
8
|
require 'ddtrace/logger'
|
9
9
|
require 'ddtrace/writer'
|
10
|
+
require 'ddtrace/runtime/identity'
|
10
11
|
require 'ddtrace/sampler'
|
11
12
|
require 'ddtrace/sampling'
|
12
13
|
require 'ddtrace/correlation'
|
@@ -201,6 +202,7 @@ module Datadog
|
|
201
202
|
# root span
|
202
203
|
@sampler.sample!(span)
|
203
204
|
span.set_tag('system.pid', Process.pid)
|
205
|
+
span.set_tag(Datadog::Ext::Runtime::TAG_ID, Datadog::Runtime::Identity.id)
|
204
206
|
|
205
207
|
if ctx && ctx.trace_id
|
206
208
|
span.trace_id = ctx.trace_id
|
@@ -287,8 +289,19 @@ module Datadog
|
|
287
289
|
# and it is user code which should be executed no matter what.
|
288
290
|
# It's not a problem since we re-raise it afterwards so for example a
|
289
291
|
# SignalException::Interrupt would still bubble up.
|
292
|
+
# rubocop:disable Metrics/BlockNesting
|
290
293
|
rescue Exception => e
|
291
|
-
(options[:on_error]
|
294
|
+
if (on_error_handler = options[:on_error]) && on_error_handler.respond_to?(:call)
|
295
|
+
begin
|
296
|
+
on_error_handler.call(span, e)
|
297
|
+
rescue
|
298
|
+
Datadog.logger.debug('Custom on_error handler failed, falling back to default')
|
299
|
+
DEFAULT_ON_ERROR.call(span, e)
|
300
|
+
end
|
301
|
+
else
|
302
|
+
Datadog.logger.debug('Custom on_error handler must be a callable, falling back to default') if on_error_handler
|
303
|
+
DEFAULT_ON_ERROR.call(span, e)
|
304
|
+
end
|
292
305
|
raise e
|
293
306
|
ensure
|
294
307
|
span.finish unless span.nil?
|
data/lib/ddtrace/utils.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
require 'ddtrace/utils/database'
|
2
|
+
require 'ddtrace/utils/forking'
|
2
3
|
|
3
4
|
module Datadog
|
4
5
|
# Utils contains low-level utilities, typically to provide pseudo-random trace IDs.
|
5
6
|
module Utils
|
7
|
+
extend Utils::Forking
|
8
|
+
|
6
9
|
EMPTY_STRING = ''.encode(::Encoding::UTF_8).freeze
|
7
10
|
# We use a custom random number generator because we want no interference
|
8
11
|
# with the default one. Using the default prng, we could break code that
|
@@ -10,23 +13,19 @@ module Datadog
|
|
10
13
|
|
11
14
|
# Return a span id
|
12
15
|
def self.next_id
|
13
|
-
reset!
|
14
|
-
|
15
|
-
@rnd.rand(Datadog::Span::RUBY_MAX_ID)
|
16
|
+
after_fork! { reset! }
|
17
|
+
id_rng.rand(Datadog::Span::RUBY_MAX_ID)
|
16
18
|
end
|
17
19
|
|
18
|
-
def self.
|
19
|
-
@
|
20
|
-
@rnd = Random.new
|
20
|
+
def self.id_rng
|
21
|
+
@id_rng ||= Random.new
|
21
22
|
end
|
22
23
|
|
23
|
-
def self.
|
24
|
-
|
24
|
+
def self.reset!
|
25
|
+
@id_rng = Random.new
|
25
26
|
end
|
26
27
|
|
27
|
-
private_class_method :
|
28
|
-
|
29
|
-
reset!
|
28
|
+
private_class_method :id_rng, :reset!
|
30
29
|
|
31
30
|
def self.truncate(value, size, omission = '...'.freeze)
|
32
31
|
string = value.to_s
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Datadog
|
2
|
+
module Utils
|
3
|
+
# Helper methods for managing forking behavior
|
4
|
+
module Forking
|
5
|
+
def self.included(base)
|
6
|
+
base.send(:prepend, ClassExtensions) if base.is_a?(Class)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.extended(base)
|
10
|
+
# Explicitly update PID here because there's a case where
|
11
|
+
# the code path that lazily updates the PID may not be exercised
|
12
|
+
# until after a fork occurs, thus causing the event to be missed.
|
13
|
+
# By eagerly setting this, we avoid this scenario.
|
14
|
+
base.update_fork_pid!
|
15
|
+
end
|
16
|
+
|
17
|
+
def after_fork!
|
18
|
+
if forked?
|
19
|
+
yield
|
20
|
+
update_fork_pid!
|
21
|
+
true
|
22
|
+
else
|
23
|
+
false
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def forked?
|
28
|
+
Process.pid != fork_pid
|
29
|
+
end
|
30
|
+
|
31
|
+
def update_fork_pid!
|
32
|
+
@fork_pid = Process.pid
|
33
|
+
end
|
34
|
+
|
35
|
+
def fork_pid
|
36
|
+
@fork_pid ||= Process.pid
|
37
|
+
end
|
38
|
+
|
39
|
+
# Adds additional functionality for Classes that implement Forking
|
40
|
+
module ClassExtensions
|
41
|
+
# Addresses an edge case where forking before invoking #update_fork_pid! on the
|
42
|
+
# object will cause forking to not be detected in the fork when it should have.
|
43
|
+
#
|
44
|
+
# This wrapper prevents this by initializing the fork PID when the object is created.
|
45
|
+
def initialize(*args, &block)
|
46
|
+
super
|
47
|
+
update_fork_pid!
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/ddtrace/version.rb
CHANGED
data/lib/ddtrace/writer.rb
CHANGED
@@ -42,13 +42,22 @@ module Datadog
|
|
42
42
|
|
43
43
|
# one worker for traces
|
44
44
|
@worker = nil
|
45
|
+
|
46
|
+
# Once stopped, this writer instance cannot be restarted.
|
47
|
+
# This allow for graceful shutdown, while preventing
|
48
|
+
# the host application from inadvertently start new
|
49
|
+
# threads during shutdown.
|
50
|
+
@stopped = false
|
45
51
|
end
|
46
52
|
|
47
53
|
def start
|
48
54
|
@mutex_after_fork.synchronize do
|
55
|
+
return false if @stopped
|
56
|
+
|
49
57
|
pid = Process.pid
|
50
58
|
return if @worker && pid == @pid
|
51
59
|
@pid = pid
|
60
|
+
|
52
61
|
start_worker
|
53
62
|
true
|
54
63
|
end
|
@@ -67,14 +76,23 @@ module Datadog
|
|
67
76
|
@worker.start
|
68
77
|
end
|
69
78
|
|
79
|
+
# Gracefully shuts down this writer.
|
80
|
+
#
|
81
|
+
# Once stopped methods calls won't fail, but
|
82
|
+
# no internal work will be performed.
|
83
|
+
#
|
84
|
+
# It is not possible to restart a stopped writer instance.
|
70
85
|
def stop
|
71
86
|
@mutex_after_fork.synchronize { stop_worker }
|
72
87
|
end
|
73
88
|
|
74
89
|
def stop_worker
|
90
|
+
@stopped = true
|
91
|
+
|
75
92
|
return if @worker.nil?
|
76
93
|
@worker.stop
|
77
94
|
@worker = nil
|
95
|
+
|
78
96
|
true
|
79
97
|
end
|
80
98
|
|
@@ -136,7 +154,7 @@ module Datadog
|
|
136
154
|
|
137
155
|
if worker_local
|
138
156
|
worker_local.enqueue_trace(trace)
|
139
|
-
|
157
|
+
elsif !@stopped
|
140
158
|
Datadog.logger.debug('Writer either failed to start or was stopped before #write could complete')
|
141
159
|
end
|
142
160
|
end
|
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.
|
4
|
+
version: 0.43.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: 2020-
|
11
|
+
date: 2020-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -122,20 +122,6 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '1.1'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: ruby-prof
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '1.4'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '1.4'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: minitest
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -374,20 +360,6 @@ dependencies:
|
|
374
360
|
- - "~>"
|
375
361
|
- !ruby/object:Gem::Version
|
376
362
|
version: '0.17'
|
377
|
-
- !ruby/object:Gem::Dependency
|
378
|
-
name: warning
|
379
|
-
requirement: !ruby/object:Gem::Requirement
|
380
|
-
requirements:
|
381
|
-
- - "~>"
|
382
|
-
- !ruby/object:Gem::Version
|
383
|
-
version: '1'
|
384
|
-
type: :development
|
385
|
-
prerelease: false
|
386
|
-
version_requirements: !ruby/object:Gem::Requirement
|
387
|
-
requirements:
|
388
|
-
- - "~>"
|
389
|
-
- !ruby/object:Gem::Version
|
390
|
-
version: '1'
|
391
363
|
description: |
|
392
364
|
ddtrace is Datadog’s tracing client for Ruby. It is used to trace requests
|
393
365
|
as they flow across web servers, databases and microservices so that developers
|
@@ -411,6 +383,8 @@ files:
|
|
411
383
|
- ".dockerignore"
|
412
384
|
- ".env"
|
413
385
|
- ".github/CODEOWNERS"
|
386
|
+
- ".github/workflows/add-milestone-to-pull-requests.yml"
|
387
|
+
- ".github/workflows/create-next-milestone.yml"
|
414
388
|
- ".gitignore"
|
415
389
|
- ".gitlab-ci.yml"
|
416
390
|
- ".rspec"
|
@@ -529,6 +503,12 @@ files:
|
|
529
503
|
- lib/ddtrace/contrib/configuration/resolver.rb
|
530
504
|
- lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb
|
531
505
|
- lib/ddtrace/contrib/configuration/settings.rb
|
506
|
+
- lib/ddtrace/contrib/cucumber/configuration/settings.rb
|
507
|
+
- lib/ddtrace/contrib/cucumber/ext.rb
|
508
|
+
- lib/ddtrace/contrib/cucumber/formatter.rb
|
509
|
+
- lib/ddtrace/contrib/cucumber/instrumentation.rb
|
510
|
+
- lib/ddtrace/contrib/cucumber/integration.rb
|
511
|
+
- lib/ddtrace/contrib/cucumber/patcher.rb
|
532
512
|
- lib/ddtrace/contrib/dalli/configuration/settings.rb
|
533
513
|
- lib/ddtrace/contrib/dalli/ext.rb
|
534
514
|
- lib/ddtrace/contrib/dalli/instrumentation.rb
|
@@ -685,6 +665,12 @@ files:
|
|
685
665
|
- lib/ddtrace/contrib/rest_client/integration.rb
|
686
666
|
- lib/ddtrace/contrib/rest_client/patcher.rb
|
687
667
|
- lib/ddtrace/contrib/rest_client/request_patch.rb
|
668
|
+
- lib/ddtrace/contrib/rspec/configuration/settings.rb
|
669
|
+
- lib/ddtrace/contrib/rspec/example.rb
|
670
|
+
- lib/ddtrace/contrib/rspec/example_group.rb
|
671
|
+
- lib/ddtrace/contrib/rspec/ext.rb
|
672
|
+
- lib/ddtrace/contrib/rspec/integration.rb
|
673
|
+
- lib/ddtrace/contrib/rspec/patcher.rb
|
688
674
|
- lib/ddtrace/contrib/sequel/configuration/settings.rb
|
689
675
|
- lib/ddtrace/contrib/sequel/database.rb
|
690
676
|
- lib/ddtrace/contrib/sequel/dataset.rb
|
@@ -717,6 +703,7 @@ files:
|
|
717
703
|
- lib/ddtrace/contrib/sneakers/integration.rb
|
718
704
|
- lib/ddtrace/contrib/sneakers/patcher.rb
|
719
705
|
- lib/ddtrace/contrib/sneakers/tracer.rb
|
706
|
+
- lib/ddtrace/contrib/status_code_matcher.rb
|
720
707
|
- lib/ddtrace/contrib/sucker_punch/configuration/settings.rb
|
721
708
|
- lib/ddtrace/contrib/sucker_punch/exception_handler.rb
|
722
709
|
- lib/ddtrace/contrib/sucker_punch/ext.rb
|
@@ -737,12 +724,14 @@ files:
|
|
737
724
|
- lib/ddtrace/event.rb
|
738
725
|
- lib/ddtrace/ext/analytics.rb
|
739
726
|
- lib/ddtrace/ext/app_types.rb
|
727
|
+
- lib/ddtrace/ext/ci.rb
|
740
728
|
- lib/ddtrace/ext/correlation.rb
|
741
729
|
- lib/ddtrace/ext/diagnostics.rb
|
742
730
|
- lib/ddtrace/ext/distributed.rb
|
743
731
|
- lib/ddtrace/ext/environment.rb
|
744
732
|
- lib/ddtrace/ext/errors.rb
|
745
733
|
- lib/ddtrace/ext/forced_tracing.rb
|
734
|
+
- lib/ddtrace/ext/git.rb
|
746
735
|
- lib/ddtrace/ext/http.rb
|
747
736
|
- lib/ddtrace/ext/integration.rb
|
748
737
|
- lib/ddtrace/ext/manual_tracing.rb
|
@@ -752,6 +741,7 @@ files:
|
|
752
741
|
- lib/ddtrace/ext/runtime.rb
|
753
742
|
- lib/ddtrace/ext/sampling.rb
|
754
743
|
- lib/ddtrace/ext/sql.rb
|
744
|
+
- lib/ddtrace/ext/test.rb
|
755
745
|
- lib/ddtrace/ext/transport.rb
|
756
746
|
- lib/ddtrace/forced_tracing.rb
|
757
747
|
- lib/ddtrace/logger.rb
|
@@ -830,6 +820,7 @@ files:
|
|
830
820
|
- lib/ddtrace/transport/traces.rb
|
831
821
|
- lib/ddtrace/utils.rb
|
832
822
|
- lib/ddtrace/utils/database.rb
|
823
|
+
- lib/ddtrace/utils/forking.rb
|
833
824
|
- lib/ddtrace/utils/time.rb
|
834
825
|
- lib/ddtrace/vendor/active_record/connection_specification.rb
|
835
826
|
- lib/ddtrace/version.rb
|
@@ -863,7 +854,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
863
854
|
- !ruby/object:Gem::Version
|
864
855
|
version: 2.0.0
|
865
856
|
requirements: []
|
866
|
-
|
857
|
+
rubyforge_project:
|
858
|
+
rubygems_version: 2.2.5
|
867
859
|
signing_key:
|
868
860
|
specification_version: 4
|
869
861
|
summary: Datadog tracing code for your Ruby applications
|