sidekiq-datadog 0.4.1 → 0.5.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 +4 -4
- data/.gitignore +2 -0
- data/.rubocop.yml +10 -0
- data/.travis.yml +7 -3
- data/Gemfile.lock +28 -11
- data/README.md +2 -1
- data/Rakefile +19 -3
- data/lib/sidekiq-datadog.rb +1 -1
- data/lib/sidekiq/datadog/version.rb +1 -1
- data/lib/sidekiq/middleware/server/datadog.rb +49 -38
- data/sidekiq-datadog.gemspec +17 -16
- data/spec/sidekiq/datadog/version_spec.rb +1 -1
- data/spec/sidekiq/middleware/server/datadog_spec.rb +43 -28
- data/spec/spec_helper.rb +11 -7
- metadata +29 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e55b57e1e98640d8573d18c6b178ecfebf50096e452e2575a96830377515ff2b
|
4
|
+
data.tar.gz: 915d6d656853099ce4a4c01c1acdfbb46bd66efd618702bc7c899177b30a3c35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccd417b410a1d7a4bd54806f970f46ed726fde5fbc9a9c81337beffd63e32f55b857a10ffb66a2ab8676b38d17380578aa8fe37b2d09fe7f845562317678e76d
|
7
|
+
data.tar.gz: 7836809f20864571790e501869c311012beb6b752d9550844d10b358c5d5ca6a734100101fced797b4de12d72363b7027fee036c0854b3b51360e473232210f9
|
data/.rubocop.yml
ADDED
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,38 +1,54 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sidekiq-datadog (0.
|
5
|
-
dogstatsd-ruby (>=
|
4
|
+
sidekiq-datadog (0.5.0)
|
5
|
+
dogstatsd-ruby (>= 4.2.0)
|
6
6
|
sidekiq
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
+
ast (2.4.0)
|
11
12
|
connection_pool (2.2.2)
|
12
13
|
diff-lcs (1.3)
|
13
|
-
dogstatsd-ruby (4.
|
14
|
-
|
15
|
-
|
14
|
+
dogstatsd-ruby (4.2.0)
|
15
|
+
jaro_winkler (1.5.2)
|
16
|
+
parallel (1.17.0)
|
17
|
+
parser (2.6.3.0)
|
18
|
+
ast (~> 2.4.0)
|
19
|
+
rack (2.0.7)
|
20
|
+
rack-protection (2.0.5)
|
16
21
|
rack
|
17
|
-
|
18
|
-
|
22
|
+
rainbow (3.0.0)
|
23
|
+
rake (12.3.2)
|
24
|
+
redis (4.1.1)
|
19
25
|
rspec (3.8.0)
|
20
26
|
rspec-core (~> 3.8.0)
|
21
27
|
rspec-expectations (~> 3.8.0)
|
22
28
|
rspec-mocks (~> 3.8.0)
|
23
29
|
rspec-core (3.8.0)
|
24
30
|
rspec-support (~> 3.8.0)
|
25
|
-
rspec-expectations (3.8.
|
31
|
+
rspec-expectations (3.8.3)
|
26
32
|
diff-lcs (>= 1.2.0, < 2.0)
|
27
33
|
rspec-support (~> 3.8.0)
|
28
34
|
rspec-mocks (3.8.0)
|
29
35
|
diff-lcs (>= 1.2.0, < 2.0)
|
30
36
|
rspec-support (~> 3.8.0)
|
31
37
|
rspec-support (3.8.0)
|
32
|
-
|
38
|
+
rubocop (0.68.1)
|
39
|
+
jaro_winkler (~> 1.5.1)
|
40
|
+
parallel (~> 1.10)
|
41
|
+
parser (>= 2.5, != 2.5.1.1)
|
42
|
+
rainbow (>= 2.2.2, < 4.0)
|
43
|
+
ruby-progressbar (~> 1.7)
|
44
|
+
unicode-display_width (>= 1.4.0, < 1.6)
|
45
|
+
ruby-progressbar (1.10.0)
|
46
|
+
sidekiq (5.2.7)
|
33
47
|
connection_pool (~> 2.2, >= 2.2.2)
|
48
|
+
rack (>= 1.5.0)
|
34
49
|
rack-protection (>= 1.5.0)
|
35
50
|
redis (>= 3.3.5, < 5)
|
51
|
+
unicode-display_width (1.5.0)
|
36
52
|
|
37
53
|
PLATFORMS
|
38
54
|
ruby
|
@@ -40,8 +56,9 @@ PLATFORMS
|
|
40
56
|
DEPENDENCIES
|
41
57
|
bundler
|
42
58
|
rake
|
43
|
-
rspec
|
59
|
+
rspec
|
60
|
+
rubocop
|
44
61
|
sidekiq-datadog!
|
45
62
|
|
46
63
|
BUNDLED WITH
|
47
|
-
|
64
|
+
2.0.1
|
data/README.md
CHANGED
@@ -54,7 +54,8 @@ executed at runtime when the job is processed
|
|
54
54
|
#### supported options
|
55
55
|
- *hostname* - the hostname used for instrumentation, defaults to system hostname. Can also be set with the `INSTRUMENTATION_HOSTNAME` env var.
|
56
56
|
- *metric_name* - the metric name (prefix) to use, defaults to "sidekiq.job".
|
57
|
-
- *tags* - array of custom tags. These can be plain strings or lambda blocks
|
57
|
+
- *tags* - array of custom tags. These can be plain strings or lambda blocks.
|
58
|
+
- *skip_tags* - array of tag names that shouldn't be emitted.
|
58
59
|
- *statsd_host* - the statsD host, defaults to "localhost". Can also be set with the `STATSD_HOST` env var
|
59
60
|
- *statsd_port* - the statsD port, defaults to 8125. Can also be set with the `STATSD_PORT` env var
|
60
61
|
- *statsd* - custom statsd instance
|
data/Rakefile
CHANGED
@@ -1,7 +1,23 @@
|
|
1
|
-
require
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
warn e.message
|
7
|
+
warn 'Run `bundle install` to install missing gems'
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
|
2
11
|
require 'rake'
|
12
|
+
|
3
13
|
require 'rspec/core'
|
4
14
|
require 'rspec/core/rake_task'
|
5
15
|
|
6
|
-
RSpec::Core::RakeTask.new(:spec)
|
7
|
-
|
16
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
17
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
18
|
+
end
|
19
|
+
|
20
|
+
require 'rubocop/rake_task'
|
21
|
+
RuboCop::RakeTask.new(:rubocop)
|
22
|
+
|
23
|
+
task default: %i[spec rubocop]
|
data/lib/sidekiq-datadog.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require
|
1
|
+
require 'sidekiq/middleware/server/datadog'
|
@@ -20,26 +20,24 @@ module Sidekiq
|
|
20
20
|
# * <tt>:hostname</tt> - the hostname used for instrumentation, defaults to system hostname, respects +INSTRUMENTATION_HOSTNAME+ env variable
|
21
21
|
# * <tt>:metric_name</tt> - the metric name (prefix) to use, defaults to "sidekiq.job"
|
22
22
|
# * <tt>:tags</tt> - array of custom tags, these can be plain strings or lambda blocks accepting a rack env instance
|
23
|
+
# * <tt>:skip_tags</tt> - array of tag names that shouldn't be emitted
|
23
24
|
# * <tt>:statsd_host</tt> - the statsD host, defaults to "localhost", respects +STATSD_HOST+ env variable
|
24
25
|
# * <tt>:statsd_port</tt> - the statsD port, defaults to 8125, respects +STATSD_PORT+ env variable
|
25
26
|
# * <tt>:statsd</tt> - custom statsd instance
|
26
|
-
def initialize(opts
|
27
|
+
def initialize(opts={})
|
27
28
|
hostname = opts[:hostname] || ENV['INSTRUMENTATION_HOSTNAME'] || Socket.gethostname
|
28
|
-
statsd_host = opts[:statsd_host] || ENV['STATSD_HOST'] ||
|
29
|
+
statsd_host = opts[:statsd_host] || ENV['STATSD_HOST'] || 'localhost'
|
29
30
|
statsd_port = (opts[:statsd_port] || ENV['STATSD_PORT'] || 8125).to_i
|
30
31
|
|
31
|
-
@metric_name = opts[:metric_name] ||
|
32
|
+
@metric_name = opts[:metric_name] || 'sidekiq.job'
|
32
33
|
@statsd = opts[:statsd] || ::Datadog::Statsd.new(statsd_host, statsd_port)
|
33
34
|
@tags = opts[:tags] || []
|
35
|
+
@skip_tags = Array(opts[:skip_tags]).map(&:to_s)
|
34
36
|
|
35
|
-
if @tags.none? {|t| t =~ /^host\:/ }
|
36
|
-
@tags.push("host:#{hostname}")
|
37
|
-
end
|
37
|
+
@tags.push("host:#{hostname}") if include_tag?('host') && @tags.none? {|t| t =~ /^host\:/ }
|
38
38
|
|
39
39
|
env = Sidekiq.options[:environment] || ENV['RACK_ENV']
|
40
|
-
if env && @tags.none? {|t| t =~ /^env\:/ }
|
41
|
-
@tags.push("env:#{ENV['RACK_ENV']}")
|
42
|
-
end
|
40
|
+
@tags.push("env:#{ENV['RACK_ENV']}") if env && include_tag?('env') && @tags.none? {|t| t =~ /^env\:/ }
|
43
41
|
end
|
44
42
|
|
45
43
|
def call(worker, job, queue, *)
|
@@ -47,7 +45,7 @@ module Sidekiq
|
|
47
45
|
begin
|
48
46
|
yield
|
49
47
|
record(worker, job, queue, start)
|
50
|
-
rescue => e
|
48
|
+
rescue StandardError => e
|
51
49
|
record(worker, job, queue, start, e)
|
52
50
|
raise
|
53
51
|
end
|
@@ -55,41 +53,54 @@ module Sidekiq
|
|
55
53
|
|
56
54
|
private
|
57
55
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
queued_ms = ((start - Time.at(job["enqueued_at"])) * 1000).round
|
62
|
-
end
|
63
|
-
name = underscore(job['wrapped'] || worker.class.to_s)
|
64
|
-
tags = @tags.flat_map do |tag|
|
65
|
-
case tag when String then tag when Proc then tag.call(worker, job, queue, error) end
|
66
|
-
end
|
56
|
+
def record(worker, job, queue, start, error=nil)
|
57
|
+
msec = ((Time.now - start) * 1000).round
|
58
|
+
tags = build_tags(worker, job, queue, error)
|
67
59
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
tags.compact!
|
60
|
+
@statsd.increment @metric_name, tags: tags
|
61
|
+
@statsd.timing "#{@metric_name}.time", msec, tags: tags
|
62
|
+
|
63
|
+
if job['enqueued_at'] # rubocop:disable Style/GuardClause
|
64
|
+
queued_ms = ((start - Time.at(job['enqueued_at'])) * 1000).round
|
65
|
+
@statsd.timing "#{@metric_name}.queued_time", queued_ms, tags: tags
|
66
|
+
end
|
67
|
+
end
|
77
68
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
69
|
+
def build_tags(worker, job, queue=nil, error=nil)
|
70
|
+
name = underscore(job['wrapped'] || worker.class.to_s)
|
71
|
+
tags = @tags.flat_map do |tag|
|
72
|
+
case tag
|
73
|
+
when String then tag
|
74
|
+
when Proc then tag.call(worker, job, queue, error)
|
82
75
|
end
|
83
76
|
end
|
77
|
+
tags.compact!
|
78
|
+
|
79
|
+
tags.push "name:#{name}" if include_tag?('name')
|
80
|
+
tags.push "queue:#{queue}" if queue && include_tag?('queue')
|
84
81
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
82
|
+
if error.nil?
|
83
|
+
tags.push 'status:ok' if include_tag?('status')
|
84
|
+
else
|
85
|
+
kind = underscore(error.class.name.sub(/Error$/, ''))
|
86
|
+
tags.push 'status:error' if include_tag?('status')
|
87
|
+
tags.push "error:#{kind}" if include_tag?('error')
|
91
88
|
end
|
92
89
|
|
90
|
+
tags
|
91
|
+
end
|
92
|
+
|
93
|
+
def include_tag?(tag)
|
94
|
+
!@skip_tags.include?(tag)
|
95
|
+
end
|
96
|
+
|
97
|
+
def underscore(word)
|
98
|
+
word = word.to_s.gsub(/::/, '/')
|
99
|
+
word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
|
100
|
+
word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
|
101
|
+
word.tr!('-', '_')
|
102
|
+
word.downcase
|
103
|
+
end
|
93
104
|
end
|
94
105
|
end
|
95
106
|
end
|
data/sidekiq-datadog.gemspec
CHANGED
@@ -1,26 +1,27 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'sidekiq/datadog/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
6
|
+
s.name = 'sidekiq-datadog'
|
8
7
|
s.version = Sidekiq::Datadog::VERSION.dup
|
9
|
-
s.authors = [
|
10
|
-
s.email = [
|
11
|
-
s.description =
|
12
|
-
s.summary =
|
13
|
-
s.homepage =
|
8
|
+
s.authors = ['Dimitrij Denissenko']
|
9
|
+
s.email = ['dimitrij@blacksquaremedia.com']
|
10
|
+
s.description = 'Datadog metrics for sidekiq'
|
11
|
+
s.summary = 'Datadog metrics for sidekiq'
|
12
|
+
s.homepage = 'https://github.com/bsm/sidekiq-datadog'
|
14
13
|
|
15
|
-
s.files = `git ls-files`.split(
|
16
|
-
s.executables = s.files.grep(%r{^bin/}).map{
|
14
|
+
s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
15
|
+
s.executables = s.files.grep(%r{^bin/}).map {|f| File.basename(f) }
|
17
16
|
s.test_files = s.files.grep(%r{^(spec)/})
|
18
|
-
s.require_paths = [
|
17
|
+
s.require_paths = ['lib']
|
18
|
+
s.required_ruby_version = '>= 2.3'
|
19
19
|
|
20
|
-
s.add_runtime_dependency(
|
21
|
-
s.add_runtime_dependency(
|
20
|
+
s.add_runtime_dependency('dogstatsd-ruby', '>= 4.2.0')
|
21
|
+
s.add_runtime_dependency('sidekiq')
|
22
22
|
|
23
|
-
s.add_development_dependency(
|
24
|
-
s.add_development_dependency(
|
25
|
-
s.add_development_dependency(
|
23
|
+
s.add_development_dependency('bundler')
|
24
|
+
s.add_development_dependency('rake')
|
25
|
+
s.add_development_dependency('rspec')
|
26
|
+
s.add_development_dependency('rubocop')
|
26
27
|
end
|
@@ -4,56 +4,71 @@ describe Sidekiq::Middleware::Server::Datadog do
|
|
4
4
|
|
5
5
|
let(:statsd) { Mock::Statsd.new('localhost', 55555) }
|
6
6
|
let(:worker) { Mock::Worker.new }
|
7
|
-
let(:tags)
|
8
|
-
[
|
9
|
-
|
7
|
+
let(:tags) do
|
8
|
+
['custom:tag', ->(w, *) { "worker:#{w.class.name[1..2]}" }]
|
9
|
+
end
|
10
|
+
let(:options) { {} }
|
10
11
|
|
11
|
-
before { statsd.
|
12
|
-
subject { described_class.new
|
12
|
+
before { statsd.messages.clear }
|
13
|
+
subject { described_class.new(hostname: 'test.host', statsd: statsd, tags: tags, **options) }
|
13
14
|
|
14
15
|
it 'should send an increment and timing event for each job run' do
|
15
|
-
subject.call(worker, { 'enqueued_at' => 1461881794.9312189 }, 'default') {
|
16
|
-
expect(statsd.
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
subject.call(worker, { 'enqueued_at' => 1461881794.9312189 }, 'default') { 'ok' }
|
17
|
+
expect(statsd.messages).to eq([
|
18
|
+
'sidekiq.job:1|c|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,queue:default,status:ok',
|
19
|
+
'sidekiq.job.time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,queue:default,status:ok',
|
20
|
+
'sidekiq.job.queued_time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,queue:default,status:ok',
|
20
21
|
])
|
21
22
|
end
|
22
23
|
|
23
24
|
it 'should support wrappers' do
|
24
|
-
subject.call(worker, { 'enqueued_at' => 1461881794.9312189, 'wrapped' => 'wrap'}, nil) {
|
25
|
-
expect(statsd.
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
subject.call(worker, { 'enqueued_at' => 1461881794.9312189, 'wrapped' => 'wrap' }, nil) { 'ok' }
|
26
|
+
expect(statsd.messages).to eq([
|
27
|
+
'sidekiq.job:1|c|#custom:tag,worker:oc,host:test.host,env:test,name:wrap,status:ok',
|
28
|
+
'sidekiq.job.time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:wrap,status:ok',
|
29
|
+
'sidekiq.job.queued_time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:wrap,status:ok',
|
29
30
|
])
|
30
31
|
end
|
31
32
|
|
32
33
|
it 'should handle errors' do
|
33
34
|
expect(lambda {
|
34
|
-
subject.call(worker, {}, nil) {
|
35
|
-
}).to raise_error(
|
35
|
+
subject.call(worker, {}, nil) { raise 'doh!' }
|
36
|
+
}).to raise_error('doh!')
|
36
37
|
|
37
|
-
expect(statsd.
|
38
|
-
|
39
|
-
|
38
|
+
expect(statsd.messages).to eq([
|
39
|
+
'sidekiq.job:1|c|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,status:error,error:runtime',
|
40
|
+
'sidekiq.job.time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,status:error,error:runtime',
|
40
41
|
])
|
41
42
|
end
|
42
43
|
|
43
44
|
context 'with a dynamic tag list' do
|
44
|
-
let(:tags)
|
45
|
-
[
|
46
|
-
|
45
|
+
let(:tags) do
|
46
|
+
['custom:tag', ->(_w, j, *) { j['args'].map {|n| "arg:#{n}" } }]
|
47
|
+
end
|
47
48
|
|
48
49
|
it 'should generate the correct tags' do
|
49
|
-
subject.call(worker, { 'enqueued_at' => 1461881794.9312189, 'args' => [1, 2] }, 'default') {
|
50
|
+
subject.call(worker, { 'enqueued_at' => 1461881794.9312189, 'args' => [1, 2] }, 'default') { 'ok' }
|
50
51
|
|
51
|
-
expect(statsd.
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
expect(statsd.messages).to eq([
|
53
|
+
'sidekiq.job:1|c|#custom:tag,arg:1,arg:2,host:test.host,env:test,name:mock/worker,queue:default,status:ok',
|
54
|
+
'sidekiq.job.time:333|ms|#custom:tag,arg:1,arg:2,host:test.host,env:test,name:mock/worker,queue:default,status:ok',
|
55
|
+
'sidekiq.job.queued_time:333|ms|#custom:tag,arg:1,arg:2,host:test.host,env:test,name:mock/worker,queue:default,status:ok',
|
55
56
|
])
|
56
57
|
end
|
57
58
|
end
|
58
59
|
|
60
|
+
context 'with a list of skipped tags' do
|
61
|
+
let(:tags) { [] }
|
62
|
+
let(:options) { { skip_tags: %i[env host name] } }
|
63
|
+
|
64
|
+
it 'should send metrics without the skipped tags' do
|
65
|
+
subject.call(worker, { 'enqueued_at' => 1461881794.9312189 }, 'default') { 'ok' }
|
66
|
+
|
67
|
+
expect(statsd.messages).to eq([
|
68
|
+
'sidekiq.job:1|c|#queue:default,status:ok',
|
69
|
+
'sidekiq.job.time:333|ms|#queue:default,status:ok',
|
70
|
+
'sidekiq.job.queued_time:333|ms|#queue:default,status:ok',
|
71
|
+
])
|
72
|
+
end
|
73
|
+
end
|
59
74
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,4 @@
|
|
1
1
|
ENV['RACK_ENV'] ||= 'test'
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
4
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
5
|
-
|
6
2
|
require 'sidekiq-datadog'
|
7
3
|
|
8
4
|
module Mock
|
@@ -10,8 +6,16 @@ module Mock
|
|
10
6
|
end
|
11
7
|
|
12
8
|
class Statsd < ::Datadog::Statsd
|
13
|
-
def timing(stat,
|
14
|
-
|
15
|
-
|
9
|
+
def timing(stat, _millis, opts={})
|
10
|
+
super(stat, 333, opts)
|
11
|
+
end
|
12
|
+
|
13
|
+
def send_stat(message)
|
14
|
+
messages.push message
|
15
|
+
end
|
16
|
+
|
17
|
+
def messages
|
18
|
+
@messages ||= []
|
19
|
+
end
|
16
20
|
end
|
17
21
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-datadog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitrij Denissenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dogstatsd-ruby
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.2.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.2.0
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: sidekiq
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -25,19 +39,19 @@ dependencies:
|
|
25
39
|
- !ruby/object:Gem::Version
|
26
40
|
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
42
|
+
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - ">="
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
type: :
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - ">="
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,7 +67,7 @@ dependencies:
|
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
70
|
+
name: rspec
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - ">="
|
@@ -67,19 +81,19 @@ dependencies:
|
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
84
|
+
name: rubocop
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- - "
|
87
|
+
- - ">="
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
89
|
+
version: '0'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- - "
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
96
|
+
version: '0'
|
83
97
|
description: Datadog metrics for sidekiq
|
84
98
|
email:
|
85
99
|
- dimitrij@blacksquaremedia.com
|
@@ -88,6 +102,7 @@ extensions: []
|
|
88
102
|
extra_rdoc_files: []
|
89
103
|
files:
|
90
104
|
- ".gitignore"
|
105
|
+
- ".rubocop.yml"
|
91
106
|
- ".travis.yml"
|
92
107
|
- Gemfile
|
93
108
|
- Gemfile.lock
|
@@ -112,15 +127,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
112
127
|
requirements:
|
113
128
|
- - ">="
|
114
129
|
- !ruby/object:Gem::Version
|
115
|
-
version: '
|
130
|
+
version: '2.3'
|
116
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
132
|
requirements:
|
118
133
|
- - ">="
|
119
134
|
- !ruby/object:Gem::Version
|
120
135
|
version: '0'
|
121
136
|
requirements: []
|
122
|
-
|
123
|
-
rubygems_version: 2.7.6
|
137
|
+
rubygems_version: 3.0.3
|
124
138
|
signing_key:
|
125
139
|
specification_version: 4
|
126
140
|
summary: Datadog metrics for sidekiq
|