datadog-notifications 0.6.2 → 0.6.3
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 +4 -4
- data/Gemfile.lock +58 -46
- data/lib/datadog/notifications/config.rb +2 -3
- data/lib/datadog/notifications/plugins/action_controller.rb +2 -4
- data/lib/datadog/notifications/plugins/active_job.rb +2 -4
- data/lib/datadog/notifications/plugins/active_record.rb +3 -4
- data/lib/datadog/notifications/plugins/base.rb +2 -3
- data/lib/datadog/notifications/plugins/grape.rb +4 -5
- data/lib/datadog/notifications/plugins/grpc.rb +2 -4
- data/lib/datadog/notifications/version.rb +1 -1
- data/spec/datadog/notifications/config_spec.rb +0 -2
- data/spec/datadog/notifications/plugins/active_record_spec.rb +0 -2
- data/spec/datadog/notifications/plugins/grape_spec.rb +0 -2
- data/spec/datadog/notifications_spec.rb +0 -2
- data/spec/spec_helper.rb +12 -12
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c2373f5f441b07227d05a8b6835726b0ce9df3eaf7b3329019814ad2b389dc0f
|
|
4
|
+
data.tar.gz: 52973ed82c2720bc02da8c6337de4efa242ac91f5021dad4913cef1842203b45
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c0603c9150fbd6ec40ed62c0b4ea1261e81b869c803a34531bdca51f19df41379fb908d3c2ddfa3661e458e3ae34f9ba01305ce4e4d9dba3cfab972334a29284
|
|
7
|
+
data.tar.gz: 8c5902469f500ffe2dbe7c245fdbb530d97e7b4f3f50123aa91d0e80c9ebb56c68e93d91cee25b2cfdaad5bdf94a8fa2057e5dac6e8a3339ca207f89d5a919c6
|
data/Gemfile.lock
CHANGED
|
@@ -1,95 +1,107 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
datadog-notifications (0.6.
|
|
4
|
+
datadog-notifications (0.6.3)
|
|
5
5
|
activesupport
|
|
6
6
|
dogstatsd-ruby (>= 4.2, < 5.0)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
-
activemodel (6.0.
|
|
12
|
-
activesupport (= 6.0.
|
|
13
|
-
activerecord (6.0.
|
|
14
|
-
activemodel (= 6.0.
|
|
15
|
-
activesupport (= 6.0.
|
|
16
|
-
activesupport (6.0.
|
|
11
|
+
activemodel (6.0.3.1)
|
|
12
|
+
activesupport (= 6.0.3.1)
|
|
13
|
+
activerecord (6.0.3.1)
|
|
14
|
+
activemodel (= 6.0.3.1)
|
|
15
|
+
activesupport (= 6.0.3.1)
|
|
16
|
+
activesupport (6.0.3.1)
|
|
17
17
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
18
18
|
i18n (>= 0.7, < 2)
|
|
19
19
|
minitest (~> 5.1)
|
|
20
20
|
tzinfo (~> 1.1)
|
|
21
|
-
zeitwerk (~> 2.2)
|
|
21
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
|
22
22
|
ast (2.4.0)
|
|
23
|
-
axiom-types (0.1.1)
|
|
24
|
-
descendants_tracker (~> 0.0.4)
|
|
25
|
-
ice_nine (~> 0.11.0)
|
|
26
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
|
27
23
|
builder (3.2.4)
|
|
28
|
-
|
|
29
|
-
descendants_tracker (~> 0.0.1)
|
|
30
|
-
concurrent-ruby (1.1.5)
|
|
31
|
-
descendants_tracker (0.0.4)
|
|
32
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
|
24
|
+
concurrent-ruby (1.1.6)
|
|
33
25
|
diff-lcs (1.3)
|
|
34
|
-
dogstatsd-ruby (4.
|
|
35
|
-
|
|
36
|
-
|
|
26
|
+
dogstatsd-ruby (4.8.1)
|
|
27
|
+
dry-configurable (0.11.5)
|
|
28
|
+
concurrent-ruby (~> 1.0)
|
|
29
|
+
dry-core (~> 0.4, >= 0.4.7)
|
|
30
|
+
dry-equalizer (~> 0.2)
|
|
31
|
+
dry-container (0.7.2)
|
|
32
|
+
concurrent-ruby (~> 1.0)
|
|
33
|
+
dry-configurable (~> 0.1, >= 0.1.3)
|
|
34
|
+
dry-core (0.4.9)
|
|
35
|
+
concurrent-ruby (~> 1.0)
|
|
36
|
+
dry-equalizer (0.3.0)
|
|
37
|
+
dry-inflector (0.2.0)
|
|
38
|
+
dry-logic (1.0.6)
|
|
39
|
+
concurrent-ruby (~> 1.0)
|
|
40
|
+
dry-core (~> 0.2)
|
|
41
|
+
dry-equalizer (~> 0.2)
|
|
42
|
+
dry-types (1.4.0)
|
|
43
|
+
concurrent-ruby (~> 1.0)
|
|
44
|
+
dry-container (~> 0.3)
|
|
45
|
+
dry-core (~> 0.4, >= 0.4.4)
|
|
46
|
+
dry-equalizer (~> 0.3)
|
|
47
|
+
dry-inflector (~> 0.1, >= 0.1.2)
|
|
48
|
+
dry-logic (~> 1.0, >= 1.0.2)
|
|
49
|
+
grape (1.3.3)
|
|
37
50
|
activesupport
|
|
38
51
|
builder
|
|
52
|
+
dry-types (>= 1.1)
|
|
39
53
|
mustermann-grape (~> 1.0.0)
|
|
40
54
|
rack (>= 1.3.0)
|
|
41
55
|
rack-accept
|
|
42
|
-
|
|
43
|
-
i18n (1.7.0)
|
|
56
|
+
i18n (1.8.2)
|
|
44
57
|
concurrent-ruby (~> 1.0)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
mustermann (1.0.
|
|
49
|
-
|
|
50
|
-
mustermann (~> 1.0.0)
|
|
58
|
+
minitest (5.14.1)
|
|
59
|
+
mustermann (1.1.1)
|
|
60
|
+
ruby2_keywords (~> 0.0.1)
|
|
61
|
+
mustermann-grape (1.0.1)
|
|
62
|
+
mustermann (>= 1.0.0)
|
|
51
63
|
parallel (1.19.1)
|
|
52
|
-
parser (2.7.
|
|
64
|
+
parser (2.7.1.3)
|
|
53
65
|
ast (~> 2.4.0)
|
|
54
|
-
rack (2.
|
|
66
|
+
rack (2.2.2)
|
|
55
67
|
rack-accept (0.4.5)
|
|
56
68
|
rack (>= 0.4)
|
|
57
69
|
rack-test (1.1.0)
|
|
58
70
|
rack (>= 1.0, < 3)
|
|
59
71
|
rainbow (3.0.0)
|
|
60
72
|
rake (13.0.1)
|
|
73
|
+
rexml (3.2.4)
|
|
61
74
|
rspec (3.9.0)
|
|
62
75
|
rspec-core (~> 3.9.0)
|
|
63
76
|
rspec-expectations (~> 3.9.0)
|
|
64
77
|
rspec-mocks (~> 3.9.0)
|
|
65
|
-
rspec-core (3.9.
|
|
66
|
-
rspec-support (~> 3.9.
|
|
67
|
-
rspec-expectations (3.9.
|
|
78
|
+
rspec-core (3.9.2)
|
|
79
|
+
rspec-support (~> 3.9.3)
|
|
80
|
+
rspec-expectations (3.9.2)
|
|
68
81
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
69
82
|
rspec-support (~> 3.9.0)
|
|
70
83
|
rspec-mocks (3.9.1)
|
|
71
84
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
72
85
|
rspec-support (~> 3.9.0)
|
|
73
|
-
rspec-support (3.9.
|
|
74
|
-
rubocop (0.
|
|
75
|
-
jaro_winkler (~> 1.5.1)
|
|
86
|
+
rspec-support (3.9.3)
|
|
87
|
+
rubocop (0.84.0)
|
|
76
88
|
parallel (~> 1.10)
|
|
77
|
-
parser (>= 2.
|
|
89
|
+
parser (>= 2.7.0.1)
|
|
78
90
|
rainbow (>= 2.2.2, < 4.0)
|
|
91
|
+
rexml
|
|
92
|
+
rubocop-ast (>= 0.0.3)
|
|
79
93
|
ruby-progressbar (~> 1.7)
|
|
80
|
-
unicode-display_width (>= 1.4.0, <
|
|
94
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
|
95
|
+
rubocop-ast (0.0.3)
|
|
96
|
+
parser (>= 2.7.0.1)
|
|
81
97
|
ruby-progressbar (1.10.1)
|
|
98
|
+
ruby2_keywords (0.0.2)
|
|
82
99
|
sqlite3 (1.4.2)
|
|
83
100
|
thread_safe (0.3.6)
|
|
84
|
-
tzinfo (1.2.
|
|
101
|
+
tzinfo (1.2.7)
|
|
85
102
|
thread_safe (~> 0.1)
|
|
86
|
-
unicode-display_width (1.
|
|
87
|
-
|
|
88
|
-
axiom-types (~> 0.1)
|
|
89
|
-
coercible (~> 1.0)
|
|
90
|
-
descendants_tracker (~> 0.0, >= 0.0.3)
|
|
91
|
-
equalizer (~> 0.0, >= 0.0.9)
|
|
92
|
-
zeitwerk (2.2.2)
|
|
103
|
+
unicode-display_width (1.7.0)
|
|
104
|
+
zeitwerk (2.3.0)
|
|
93
105
|
|
|
94
106
|
PLATFORMS
|
|
95
107
|
ruby
|
|
@@ -14,8 +14,8 @@ module Datadog
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
# Use a plugin
|
|
17
|
-
def use(klass, opts
|
|
18
|
-
@plugins.push klass.new(opts)
|
|
17
|
+
def use(klass, **opts)
|
|
18
|
+
@plugins.push klass.new(**opts)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
protected
|
|
@@ -29,7 +29,6 @@ module Datadog
|
|
|
29
29
|
|
|
30
30
|
reporter.new statsd_host, statsd_port, namespace: namespace, tags: tags, socket_path: socket_path
|
|
31
31
|
end
|
|
32
|
-
|
|
33
32
|
end
|
|
34
33
|
end
|
|
35
34
|
end
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
module Datadog::Notifications::Plugins
|
|
2
2
|
class ActionController < Base
|
|
3
|
-
|
|
4
3
|
attr_reader :metric_name
|
|
5
4
|
|
|
6
5
|
# Options:
|
|
7
6
|
#
|
|
8
7
|
# *<tt>:metric_name</tt> - the metric name, defaults to "rails.request"
|
|
9
8
|
# *<tt>:tags</tt> - additional tags
|
|
10
|
-
def initialize(opts
|
|
9
|
+
def initialize(metric_name: 'rails.request', **opts)
|
|
11
10
|
super
|
|
12
|
-
@metric_name = opts[:metric_name] || 'rails.request'
|
|
13
11
|
|
|
12
|
+
@metric_name = metric_name
|
|
14
13
|
Datadog::Notifications.subscribe 'process_action.action_controller' do |reporter, event|
|
|
15
14
|
record reporter, event
|
|
16
15
|
end
|
|
@@ -34,6 +33,5 @@ module Datadog::Notifications::Plugins
|
|
|
34
33
|
reporter.timing "#{metric_name}.time.view", payload[:view_runtime], tags: tags
|
|
35
34
|
end
|
|
36
35
|
end
|
|
37
|
-
|
|
38
36
|
end
|
|
39
37
|
end
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
module Datadog::Notifications::Plugins
|
|
2
2
|
class ActiveJob < Base
|
|
3
|
-
|
|
4
3
|
attr_reader :metric_name
|
|
5
4
|
|
|
6
5
|
# Options:
|
|
7
6
|
#
|
|
8
7
|
# *<tt>:metric_name</tt> - the metric name, defaults to "activejob.perform"
|
|
9
8
|
# *<tt>:tags</tt> - additional tags
|
|
10
|
-
def initialize(opts
|
|
9
|
+
def initialize(metric_name: 'activejob.perform', **opts)
|
|
11
10
|
super
|
|
12
|
-
@metric_name = opts[:metric_name] || 'activejob.perform'
|
|
13
11
|
|
|
12
|
+
@metric_name = metric_name
|
|
14
13
|
Datadog::Notifications.subscribe 'perform.active_job' do |reporter, event|
|
|
15
14
|
record reporter, event
|
|
16
15
|
end
|
|
@@ -28,6 +27,5 @@ module Datadog::Notifications::Plugins
|
|
|
28
27
|
reporter.timing "#{metric_name}.time", event.duration, tags: tags
|
|
29
28
|
end
|
|
30
29
|
end
|
|
31
|
-
|
|
32
30
|
end
|
|
33
31
|
end
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
module Datadog::Notifications::Plugins
|
|
2
2
|
class ActiveRecord < Base
|
|
3
|
-
|
|
4
3
|
attr_reader :metric_name
|
|
5
4
|
|
|
6
5
|
# Options:
|
|
@@ -9,9 +8,10 @@ module Datadog::Notifications::Plugins
|
|
|
9
8
|
# *<tt>:include_schema</tt> - record schema queries, off by default
|
|
10
9
|
# *<tt>:include_generic</tt> - record general (nameless) queries, off by default
|
|
11
10
|
# *<tt>:tags</tt> - additional tags
|
|
12
|
-
def initialize(opts
|
|
11
|
+
def initialize(metric_name: 'activerecord.sql', **opts)
|
|
13
12
|
super
|
|
14
|
-
|
|
13
|
+
|
|
14
|
+
@metric_name = metric_name
|
|
15
15
|
@include_schema = opts[:include_schema] == true
|
|
16
16
|
@include_generic = opts[:include_generic] == true
|
|
17
17
|
@include_raw = opts[:include_raw] == true
|
|
@@ -38,6 +38,5 @@ module Datadog::Notifications::Plugins
|
|
|
38
38
|
reporter.timing "#{metric_name}.time", event.duration, tags: tags
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
|
-
|
|
42
41
|
end
|
|
43
42
|
end
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
module Datadog::Notifications::Plugins
|
|
2
2
|
class Grape < Base
|
|
3
|
-
|
|
4
3
|
def self.exception_status(err)
|
|
5
4
|
err.respond_to?(:status) ? err.status : 500
|
|
6
5
|
end
|
|
@@ -12,10 +11,11 @@ module Datadog::Notifications::Plugins
|
|
|
12
11
|
# *<tt>:metric_name</tt> - the metric name, defaults to "grape.request"
|
|
13
12
|
# *<tt>:exception_handler</tt> - a custom exception handler proc which accepts an exception object and returns a status
|
|
14
13
|
# *<tt>:tags</tt> - additional tags
|
|
15
|
-
def initialize(opts
|
|
14
|
+
def initialize(metric_name: 'grape.request', exception_handler:, **opts)
|
|
16
15
|
super
|
|
17
|
-
|
|
18
|
-
@
|
|
16
|
+
|
|
17
|
+
@metric_name = metric_name
|
|
18
|
+
@exception_handler = exception_handler || ->(e) { self.class.exception_status(e) }
|
|
19
19
|
|
|
20
20
|
Datadog::Notifications.subscribe 'endpoint_run.grape' do |reporter, event|
|
|
21
21
|
record reporter, event
|
|
@@ -59,6 +59,5 @@ module Datadog::Notifications::Plugins
|
|
|
59
59
|
path.gsub!(/:(\w+)/) {|m| m[1..-1].upcase }
|
|
60
60
|
path
|
|
61
61
|
end
|
|
62
|
-
|
|
63
62
|
end
|
|
64
63
|
end
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
module Datadog::Notifications::Plugins
|
|
2
2
|
class GRPC < Base
|
|
3
|
-
|
|
4
3
|
# Options:
|
|
5
4
|
#
|
|
6
5
|
# *<tt>:metric_name</tt> - the metric name, defaults to 'grpc.request'
|
|
@@ -10,10 +9,10 @@ module Datadog::Notifications::Plugins
|
|
|
10
9
|
# Notification payload should have :service (service name, string) and :action (service action/method name, string) keys.
|
|
11
10
|
#
|
|
12
11
|
# Compatible instrumentation is implemented in grpcx gem: https://github.com/bsm/grpcx (>= 0.2.0)
|
|
13
|
-
def initialize(opts
|
|
12
|
+
def initialize(metric_name: 'grpc.request', **opts)
|
|
14
13
|
super
|
|
15
|
-
@metric_name = opts[:metric_name] || 'grpc.request'
|
|
16
14
|
|
|
15
|
+
@metric_name = metric_name
|
|
17
16
|
Datadog::Notifications.subscribe 'process_action.grpc' do |reporter, event|
|
|
18
17
|
record reporter, event
|
|
19
18
|
end
|
|
@@ -34,6 +33,5 @@ module Datadog::Notifications::Plugins
|
|
|
34
33
|
reporter.timing "#{@metric_name}.time", event.duration, tags: tags
|
|
35
34
|
end
|
|
36
35
|
end
|
|
37
|
-
|
|
38
36
|
end
|
|
39
37
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Datadog::Notifications::Config do
|
|
4
|
-
|
|
5
4
|
it 'should be connect!' do
|
|
6
5
|
subject.reporter = Mock::Reporter
|
|
7
6
|
subject.hostname = 'test.host'
|
|
@@ -32,5 +31,4 @@ describe Datadog::Notifications::Config do
|
|
|
32
31
|
expect(subject.plugins.size).to eq(1)
|
|
33
32
|
expect(subject.plugins.first).to be_instance_of(Datadog::Notifications::Plugins::ActionController)
|
|
34
33
|
end
|
|
35
|
-
|
|
36
34
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Datadog::Notifications::Plugins::ActiveRecord do
|
|
4
|
-
|
|
5
4
|
it 'should send an increment and timing event for each query' do
|
|
6
5
|
Post.all.to_a
|
|
7
6
|
expect(buffered).to eq [
|
|
@@ -17,5 +16,4 @@ describe Datadog::Notifications::Plugins::ActiveRecord do
|
|
|
17
16
|
'activerecord.sql.time:333|ms|#custom:tag,env:test,host:test.host,query:post.load',
|
|
18
17
|
]
|
|
19
18
|
end
|
|
20
|
-
|
|
21
19
|
end
|
|
@@ -14,7 +14,6 @@ describe Datadog::Notifications::Plugins::Grape do
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
Class.new(Grape::API) do
|
|
17
|
-
|
|
18
17
|
rescue_from unauthorized do |_e|
|
|
19
18
|
error!({ message: 'unauthorized', error: '401 Unauthorized' }, 401)
|
|
20
19
|
end
|
|
@@ -96,5 +95,4 @@ describe Datadog::Notifications::Plugins::Grape do
|
|
|
96
95
|
|
|
97
96
|
expect(buffered).to eq([])
|
|
98
97
|
end
|
|
99
|
-
|
|
100
98
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Datadog::Notifications do
|
|
4
|
-
|
|
5
4
|
subject { described_class.instance }
|
|
6
5
|
after { ActiveSupport::Notifications.unsubscribe(subscription) }
|
|
7
6
|
|
|
@@ -29,5 +28,4 @@ describe Datadog::Notifications do
|
|
|
29
28
|
'web.render.time:333|ms|#custom:tag,env:test,host:test.host,status:200,method:GET',
|
|
30
29
|
])
|
|
31
30
|
end
|
|
32
|
-
|
|
33
31
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -22,8 +22,8 @@ end
|
|
|
22
22
|
|
|
23
23
|
module Mock
|
|
24
24
|
class Reporter < Datadog::Notifications::Reporter
|
|
25
|
-
def timing(stat, _millis, opts
|
|
26
|
-
super(stat, 333, opts)
|
|
25
|
+
def timing(stat, _millis, **opts)
|
|
26
|
+
super(stat, 333, **opts)
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def send_stat(message)
|
|
@@ -36,7 +36,7 @@ module Mock
|
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
class Instrumentable
|
|
39
|
-
def initialize(opts
|
|
39
|
+
def initialize(**opts)
|
|
40
40
|
@opts = opts
|
|
41
41
|
end
|
|
42
42
|
|
|
@@ -71,13 +71,13 @@ Datadog::Notifications.configure do |c|
|
|
|
71
71
|
|
|
72
72
|
c.use Datadog::Notifications::Plugins::ActiveRecord
|
|
73
73
|
c.use Datadog::Notifications::Plugins::Grape,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
74
|
+
tags: ['more:tags'],
|
|
75
|
+
metric_name: 'api.request',
|
|
76
|
+
exception_handler: lambda {|e|
|
|
77
|
+
if e.message.include?('unauthorized')
|
|
78
|
+
401
|
|
79
|
+
else
|
|
80
|
+
Datadog::Notifications::Plugins::Grape.exception_status(e)
|
|
81
|
+
end
|
|
82
|
+
}
|
|
83
83
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: datadog-notifications
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dimitrij Denissenko
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-05-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -209,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
209
209
|
- !ruby/object:Gem::Version
|
|
210
210
|
version: '0'
|
|
211
211
|
requirements: []
|
|
212
|
-
rubygems_version: 3.
|
|
212
|
+
rubygems_version: 3.1.2
|
|
213
213
|
signing_key:
|
|
214
214
|
specification_version: 4
|
|
215
215
|
summary: Generic ActiveSupport::Notifications Datadog handler
|