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 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