sidekiq-datadog 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 587cd9c94eb2d0018ddc31e367990f2f0121c40061e8437e6ed0d1491f16a499
4
- data.tar.gz: b9e3cf7e254ecb3f26c1df1969f5d40cd20113fed85d69de13792001ec02be87
3
+ metadata.gz: e55b57e1e98640d8573d18c6b178ecfebf50096e452e2575a96830377515ff2b
4
+ data.tar.gz: 915d6d656853099ce4a4c01c1acdfbb46bd66efd618702bc7c899177b30a3c35
5
5
  SHA512:
6
- metadata.gz: 3abe152091c7c6cce17d943b830f37cf1954a0151c9662fd562d5d4f64fc5d7df87118bcdd8d4e211e1398a2fa9b9af24f0f9f7644c3f20135c93a7825778c54
7
- data.tar.gz: f0eb0e04d485c4d915d7c9a1198946725ed9e99be82b2130f4fb39fa19fb04a205a64576f5353f0a907f5ddc608f1baeb643dd21046554ce192e5ebe76b76936
6
+ metadata.gz: ccd417b410a1d7a4bd54806f970f46ed726fde5fbc9a9c81337beffd63e32f55b857a10ffb66a2ab8676b38d17380578aa8fe37b2d09fe7f845562317678e76d
7
+ data.tar.gz: 7836809f20864571790e501869c311012beb6b752d9550844d10b358c5d5ca6a734100101fced797b4de12d72363b7027fee036c0854b3b51360e473232210f9
data/.gitignore CHANGED
@@ -4,3 +4,5 @@
4
4
  .config
5
5
  .yardoc
6
6
  pkg
7
+ .rubocop-*
8
+ .rake*
@@ -0,0 +1,10 @@
1
+ inherit_from:
2
+ - https://gitlab.com/bsm/misc/raw/master/rubocop/default.yml
3
+
4
+ AllCops:
5
+ TargetRubyVersion: "2.3"
6
+
7
+ Naming/FileName:
8
+ Exclude:
9
+ - "lib/sidekiq-datadog.rb"
10
+ - "sidekiq-datadog.gemspec"
@@ -1,5 +1,9 @@
1
- language: ruby
2
1
  cache: bundler
2
+ language: ruby
3
+ before_install:
4
+ - gem install bundler
3
5
  rvm:
4
- - 2.5.1
5
- - 2.4.4
6
+ - 2.6
7
+ - 2.5
8
+ - 2.4
9
+ - 2.3
@@ -1,38 +1,54 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sidekiq-datadog (0.4.1)
5
- dogstatsd-ruby (>= 3.3.0)
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.0.0)
14
- rack (2.0.5)
15
- rack-protection (2.0.3)
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
- rake (12.3.1)
18
- redis (4.0.2)
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.1)
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
- sidekiq (5.2.1)
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 (~> 3.0)
59
+ rspec
60
+ rubocop
44
61
  sidekiq-datadog!
45
62
 
46
63
  BUNDLED WITH
47
- 1.16.4
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 "bundler/gem_tasks"
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
- task :default => :spec
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]
@@ -1 +1 @@
1
- require "sidekiq/middleware/server/datadog"
1
+ require 'sidekiq/middleware/server/datadog'
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module Datadog
3
- VERSION = "0.4.1"
3
+ VERSION = '0.5.0'.freeze
4
4
  end
5
5
  end
@@ -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'] || "localhost"
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] || "sidekiq.job"
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
- def record(worker, job, queue, start, error = nil)
59
- ms = ((Time.now - start) * 1000).round
60
- if job["enqueued_at"]
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
- tags.push "name:#{name}"
69
- tags.push "queue:#{queue}" if queue
70
- if error
71
- kind = underscore(error.class.name.sub(/Error$/, ''))
72
- tags.push "status:error", "error:#{kind}"
73
- else
74
- tags.push "status:ok"
75
- end
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
- @statsd.increment @metric_name, :tags => tags
79
- @statsd.timing "#{@metric_name}.time", ms, :tags => tags
80
- if queued_ms
81
- @statsd.timing "#{@metric_name}.queued_time", queued_ms, :tags => tags
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
- def underscore(word)
86
- word = word.to_s.gsub(/::/, '/')
87
- word.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2')
88
- word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
89
- word.tr!("-", "_")
90
- word.downcase
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
@@ -1,26 +1,27 @@
1
- # -*- encoding: utf-8 -*-
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 = "sidekiq-datadog"
6
+ s.name = 'sidekiq-datadog'
8
7
  s.version = Sidekiq::Datadog::VERSION.dup
9
- s.authors = ["Dimitrij Denissenko"]
10
- s.email = ["dimitrij@blacksquaremedia.com"]
11
- s.description = %q{Datadog metrics for sidekiq}
12
- s.summary = %q{Datadog metrics for sidekiq}
13
- s.homepage = "https://github.com/bsm/sidekiq-datadog"
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{ |f| File.basename(f) }
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 = ["lib"]
17
+ s.require_paths = ['lib']
18
+ s.required_ruby_version = '>= 2.3'
19
19
 
20
- s.add_runtime_dependency(%q<sidekiq>)
21
- s.add_runtime_dependency(%q<dogstatsd-ruby>, ">= 3.3.0")
20
+ s.add_runtime_dependency('dogstatsd-ruby', '>= 4.2.0')
21
+ s.add_runtime_dependency('sidekiq')
22
22
 
23
- s.add_development_dependency(%q<rake>)
24
- s.add_development_dependency(%q<bundler>)
25
- s.add_development_dependency(%q<rspec>, "~> 3.0")
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
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Sidekiq::Datadog do
4
- it "has a version" do
4
+ it 'has a version' do
5
5
  expect(Sidekiq::Datadog::VERSION).to be_instance_of(String)
6
6
  end
7
7
  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
- ["custom:tag", lambda{|w, *| "worker:#{w.class.name[1..2]}" }]
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.written.clear }
12
- subject { described_class.new hostname: "test.host", statsd: statsd, tags: tags }
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') { "ok" }
16
- expect(statsd.written).to eq([
17
- "sidekiq.job:1|c|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,queue:default,status:ok",
18
- "sidekiq.job.time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,queue:default,status:ok",
19
- "sidekiq.job.queued_time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,queue:default,status:ok",
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) { "ok" }
25
- expect(statsd.written).to eq([
26
- "sidekiq.job:1|c|#custom:tag,worker:oc,host:test.host,env:test,name:wrap,status:ok",
27
- "sidekiq.job.time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:wrap,status:ok",
28
- "sidekiq.job.queued_time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:wrap,status:ok",
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) { raise RuntimeError, "doh!" }
35
- }).to raise_error("doh!")
35
+ subject.call(worker, {}, nil) { raise 'doh!' }
36
+ }).to raise_error('doh!')
36
37
 
37
- expect(statsd.written).to eq([
38
- "sidekiq.job:1|c|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,status:error,error:runtime",
39
- "sidekiq.job.time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,status:error,error:runtime",
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
- ["custom:tag", lambda {|w, j, *| j['args'].map { |n| "arg:#{n}"} }]
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') { "ok" }
50
+ subject.call(worker, { 'enqueued_at' => 1461881794.9312189, 'args' => [1, 2] }, 'default') { 'ok' }
50
51
 
51
- expect(statsd.written).to eq([
52
- "sidekiq.job:1|c|#custom:tag,arg:1,arg:2,host:test.host,env:test,name:mock/worker,queue:default,status:ok",
53
- "sidekiq.job.time:333|ms|#custom:tag,arg:1,arg:2,host:test.host,env:test,name:mock/worker,queue:default,status:ok",
54
- "sidekiq.job.queued_time:333|ms|#custom:tag,arg:1,arg:2,host:test.host,env:test,name:mock/worker,queue:default,status:ok"
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
@@ -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, ms, opts={}); super(stat, 333, opts); end
14
- def send_stat(message); written.push(message); end
15
- def written; @written ||= []; end
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.1
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: 2018-08-28 00:00:00.000000000 Z
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: dogstatsd-ruby
42
+ name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: 3.3.0
34
- type: :runtime
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: 3.3.0
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: bundler
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: rspec
84
+ name: rubocop
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: '3.0'
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: '3.0'
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: '0'
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
- rubyforge_project:
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