yabeda-sidekiq 0.6.0 → 0.7.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: 63dde1ca9f23aca58fe86e630c4cbaa48426ad3621fee5bc0b6fa5dc804d0a3d
4
- data.tar.gz: 67ab69e2ba72d772ed577636edb12f28b06ab829c9e31ba3e18fe74f711c01f7
3
+ metadata.gz: 660902666ec22bdc3a244a45bd15ac3a67b8dc2d13cd703c779453e689002b93
4
+ data.tar.gz: 5b45a914f585959fceceda65d95a72bf6415f9e6a3bb889f54243ac8f887adec
5
5
  SHA512:
6
- metadata.gz: c03295246b723eb55b6b93fa3bf0068c8306aa01ddd11915d228dba4c8d70640b961d2f63cb8448d88c130f98d3560ab6fca0cf01fb94fef00751ddf6390ea39
7
- data.tar.gz: e010471f073e8becf98515531e2c532025cdaac64fac393fdad485074b0705964ed60e564d6b523da50b5421be14b6a3dd6838d1f228b535be5d9926d3218cee
6
+ metadata.gz: 22be4dea939719b79f230d80ddcf38269cc476d3cf51c6664938b5bab6e93e2e924dbebcdcbcbd9dde59e0822f28c33a58b83be483015dad9ed32000cb9fceeb
7
+ data.tar.gz: 3d3c314d83b3943fcbd5d110f44826abbad4beb50c61120f5f26d33c398cc02bf970c36a6272143f3ae27dd9adfc73f42e69f898460461f952519bb8de9a768f
@@ -1,17 +1,18 @@
1
1
  ---
2
2
  require:
3
- - rubocop-rspec
3
+ - rubocop-rspec
4
4
 
5
5
  AllCops:
6
6
  TargetRubyVersion: 2.3
7
7
 
8
8
  Metrics/BlockLength:
9
+ Enabled: false
9
10
  Exclude:
10
11
  - "Gemfile"
11
12
  - "spec/**/*"
12
13
 
13
- Style/BracesAroundHashParameters:
14
- EnforcedStyle: context_dependent
14
+ Layout/LineLength:
15
+ Max: 160
15
16
 
16
17
  Style/StringLiterals:
17
18
  EnforcedStyle: double_quotes
@@ -44,3 +45,23 @@ Style/TrailingCommaInHashLiteral:
44
45
  Enabled: true
45
46
  EnforcedStyleForMultiline: consistent_comma
46
47
 
48
+ Style/HashEachMethods:
49
+ Enabled: true
50
+
51
+ Style/HashTransformKeys:
52
+ Enabled: true
53
+
54
+ Style/HashTransformValues:
55
+ Enabled: true
56
+
57
+ RSpec/ExampleLength:
58
+ Enabled: false
59
+
60
+ Style/Documentation:
61
+ Enabled: false
62
+
63
+ Metrics/MethodLength:
64
+ Max: 15
65
+
66
+ Metrics/AbcSize:
67
+ Max: 17
@@ -1,5 +1,7 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.5.1
5
- before_install: gem install bundler -v 1.16.1
4
+ - 2.7.1
5
+ - 2.6.6
6
+ - 2.5.8
7
+ before_install: gem install bundler -v '~> 2.0'
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
6
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## 0.7.0 - 2020-07-15
9
+
10
+ ### Changed
11
+
12
+ - Tags from `yabeda_tags` method are applied to all metrics collected inside a job, not only sidekiq-specific. See [#14](https://github.com/yabeda-rb/yabeda-sidekiq/issues/14). @Envek
13
+
8
14
  ## 0.6.0 - 2020-07-15
9
15
 
10
16
  ### Added
data/Gemfile CHANGED
@@ -11,6 +11,6 @@ group :development, :test do
11
11
  gem "pry"
12
12
  gem "pry-byebug", platform: :mri
13
13
 
14
- gem "rubocop"
14
+ gem "rubocop", "~> 0.80.0"
15
15
  gem "rubocop-rspec"
16
16
  end
data/README.md CHANGED
@@ -16,6 +16,14 @@ And then execute:
16
16
 
17
17
  $ bundle
18
18
 
19
+ If you're not on Rails then configure Yabeda after your application was initialized:
20
+
21
+ ```ruby
22
+ Yabeda.configure!
23
+ ```
24
+
25
+ _If you're using Ruby on Rails then Yabeda will configure itself automatically!_
26
+
19
27
  **And that is it!** Sidekiq metrics are being collected!
20
28
 
21
29
  Additionally, depending on your adapter, you may want to setup metrics export. E.g. for [yabeda-prometheus]:
data/Rakefile CHANGED
@@ -2,7 +2,10 @@
2
2
 
3
3
  require "bundler/gem_tasks"
4
4
  require "rspec/core/rake_task"
5
+ require "rubocop/rake_task"
6
+
7
+ RuboCop::RakeTask.new
5
8
 
6
9
  RSpec::Core::RakeTask.new(:spec)
7
10
 
8
- task default: :spec
11
+ task default: %i[rubocop spec]
@@ -12,7 +12,7 @@ module Yabeda
12
12
  module Sidekiq
13
13
  LONG_RUNNING_JOB_RUNTIME_BUCKETS = [
14
14
  0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10, # standard (from Prometheus)
15
- 30, 60, 120, 300, 1800, 3600, 21_600 # Sidekiq tasks may be very long-running
15
+ 30, 60, 120, 300, 1800, 3600, 21_600, # Sidekiq tasks may be very long-running
16
16
  ].freeze
17
17
 
18
18
  Yabeda.configure do
@@ -88,14 +88,16 @@ module Yabeda
88
88
 
89
89
  class << self
90
90
  def labelize(worker, job, queue)
91
- { queue: queue, worker: worker_class(worker, job), **custom_tags(worker, job).to_h }
91
+ { queue: queue, worker: worker_class(worker, job) }
92
92
  end
93
93
 
94
94
  def worker_class(worker, job)
95
95
  if defined?(ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper)
96
- return job["wrapped"] if worker.is_a?(ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper)
96
+ if worker.is_a?(ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper) || worker == ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper
97
+ return job["wrapped"].to_s
98
+ end
97
99
  end
98
- (worker.is_a?(String) ? worker : worker.class).to_s
100
+ (worker.is_a?(String) || worker.is_a?(Class) ? worker : worker.class).to_s
99
101
  end
100
102
 
101
103
  def custom_tags(worker, job)
@@ -4,13 +4,17 @@ module Yabeda
4
4
  module Sidekiq
5
5
  # Sidekiq worker middleware
6
6
  class ServerMiddleware
7
+ # rubocop: disable Metrics/AbcSize, Metrics/MethodLength:
7
8
  def call(worker, job, queue)
8
- labels = Yabeda::Sidekiq.labelize(worker, job, queue)
9
- start = Time.now
9
+ custom_tags = Yabeda::Sidekiq.custom_tags(worker, job).to_h
10
+ labels = Yabeda::Sidekiq.labelize(worker, job, queue).merge(custom_tags)
11
+ start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
10
12
  begin
11
13
  job_instance = ::Sidekiq::Job.new(job)
12
14
  Yabeda.sidekiq_job_latency.measure(labels, job_instance.latency)
13
- yield
15
+ Yabeda.with_tags(**custom_tags) do
16
+ yield
17
+ end
14
18
  Yabeda.sidekiq_jobs_success_total.increment(labels)
15
19
  rescue Exception # rubocop: disable Lint/RescueException
16
20
  Yabeda.sidekiq_jobs_failed_total.increment(labels)
@@ -20,11 +24,12 @@ module Yabeda
20
24
  Yabeda.sidekiq_jobs_executed_total.increment(labels)
21
25
  end
22
26
  end
27
+ # rubocop: enable Metrics/AbcSize, Metrics/MethodLength:
23
28
 
24
29
  private
25
30
 
26
31
  def elapsed(start)
27
- (Time.now - start).round(3)
32
+ (Process.clock_gettime(Process::CLOCK_MONOTONIC) - start).round(3)
28
33
  end
29
34
  end
30
35
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Yabeda
4
4
  module Sidekiq
5
- VERSION = "0.6.0"
5
+ VERSION = "0.7.0"
6
6
  end
7
7
  end
@@ -22,10 +22,11 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
24
 
25
- spec.add_dependency "yabeda", "~> 0.2"
26
25
  spec.add_dependency "sidekiq"
26
+ spec.add_dependency "yabeda", "~> 0.6"
27
27
 
28
- spec.add_development_dependency "bundler", "~> 1.16"
29
- spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "activejob", ">= 6.0"
29
+ spec.add_development_dependency "bundler", "~> 2.0"
30
+ spec.add_development_dependency "rake", "~> 13.0"
30
31
  spec.add_development_dependency "rspec", "~> 3.0"
31
32
  end
metadata CHANGED
@@ -1,71 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yabeda-sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey Novikov
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-15 00:00:00.000000000 Z
11
+ date: 2020-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sidekiq
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: yabeda
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: '0.2'
33
+ version: '0.6'
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: '0.2'
40
+ version: '0.6'
27
41
  - !ruby/object:Gem::Dependency
28
- name: sidekiq
42
+ name: activejob
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
47
+ version: '6.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: '0'
54
+ version: '6.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '1.16'
61
+ version: '2.0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '1.16'
68
+ version: '2.0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '10.0'
75
+ version: '13.0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '10.0'
82
+ version: '13.0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rspec
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -108,7 +122,7 @@ homepage: https://github.com/yabeda-rb/yabeda-sidekiq
108
122
  licenses:
109
123
  - MIT
110
124
  metadata: {}
111
- post_install_message:
125
+ post_install_message:
112
126
  rdoc_options: []
113
127
  require_paths:
114
128
  - lib
@@ -124,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
138
  version: '0'
125
139
  requirements: []
126
140
  rubygems_version: 3.1.2
127
- signing_key:
141
+ signing_key:
128
142
  specification_version: 4
129
143
  summary: Extensible Prometheus exporter for monitoring your Sidekiq
130
144
  test_files: []