sidekiq-status 1.1.4 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +3 -5
- data/Appraisals +4 -8
- data/CHANGELOG.md +7 -69
- data/README.md +17 -24
- data/gemfiles/{sidekiq_3.x.gemfile → sidekiq_6.x.gemfile} +1 -1
- data/lib/sidekiq-status/storage.rb +1 -1
- data/lib/sidekiq-status/version.rb +1 -1
- data/lib/sidekiq-status/web.rb +8 -4
- data/sidekiq-status.gemspec +2 -2
- data/spec/lib/sidekiq-status/web_spec.rb +1 -0
- data/spec/lib/sidekiq-status_spec.rb +5 -5
- metadata +11 -12
- data/gemfiles/sidekiq_4.x.gemfile +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8062f467160552b97566de033649c1b33869da92ce3ff168b1a20b1b38340eb6
|
4
|
+
data.tar.gz: 2a918b6cb05fe934db2521461b2abf26e4680def459486d4afe143e4a51d0cd6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d35f5ab165082045af4e53220d72a161a821816a3ec8f8cd8cec7ce2811358b9d78b56d211fea0cae65b5990e7fbbb04f4264e2a3f09588ce9c642cca3a705b
|
7
|
+
data.tar.gz: 558584271417c9eb89112268fd779c75f47e90044dd94c799675bec0a0f325a6015000e56a3d64397ed21eee0ae2089b22ad03bd73ed059b1ada368592e42e81
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.3
|
4
|
-
- 2.4
|
5
|
-
- 2.5
|
6
3
|
- 2.6
|
4
|
+
- 2.7
|
5
|
+
- 3.0
|
7
6
|
- ruby-head
|
8
7
|
gemfile:
|
9
|
-
- gemfiles/sidekiq_3.x.gemfile
|
10
|
-
- gemfiles/sidekiq_4.x.gemfile
|
11
8
|
- gemfiles/sidekiq_5.x.gemfile
|
9
|
+
- gemfiles/sidekiq_6.x.gemfile
|
12
10
|
before_install:
|
13
11
|
- gem update --system
|
14
12
|
- gem update bundler
|
data/Appraisals
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,71 +1,9 @@
|
|
1
|
-
**Version
|
2
|
-
*
|
1
|
+
**Version 2.0.0**
|
2
|
+
* Adds support for Ruby 2.7, 3.0
|
3
|
+
* Adds support for Sidekiq 6.x
|
4
|
+
* Removes support for Ruby 2.3, 2.4, 2.5
|
5
|
+
* Removes support for Sidekiq 3.x, 4.x
|
3
6
|
|
4
|
-
**
|
5
|
-
* Adds a job status filter to the UI (#149)
|
7
|
+
**Versions 1.1.4 and prior**
|
6
8
|
|
7
|
-
|
8
|
-
* Job detail pages now show custom data keys (#146)
|
9
|
-
|
10
|
-
**Version 1.1.1**
|
11
|
-
* Uses SCAN rather than KEYS when retrieving job ids from Redis (#139)
|
12
|
-
|
13
|
-
**Version 1.1.0**
|
14
|
-
+ Fixes the use case of multiple services sharing the same Redis instance (#135)
|
15
|
-
|
16
|
-
**Version 1.0.2**
|
17
|
-
+ Fixes status not being set to `:failed` after retries
|
18
|
-
|
19
|
-
**Version 1.0.1**
|
20
|
-
+ Fixes namespacing in `sidekiq-status/testing/inline`
|
21
|
-
|
22
|
-
**Version 1.0.0**
|
23
|
-
+ Version number bumped to indicate stable release
|
24
|
-
|
25
|
-
**Version 0.8.1**
|
26
|
-
+ Avoids transient celluloid dependency in Sidekiq < 5.x
|
27
|
-
|
28
|
-
**Version 0.8.0**
|
29
|
-
+ Properly ignores jobs that do not have `Sidekiq::Status::Worker` included
|
30
|
-
+ Honors custom job expirations for ActiveJob jobs
|
31
|
-
+ Adds a `:retrying` status
|
32
|
-
+ Adds remove / retry buttons to the index page
|
33
|
-
+ Server middleware will now catches all exception types
|
34
|
-
+ Changes where server middleware is inserted in the chain
|
35
|
-
+ Reduces the amount of Redis calls made
|
36
|
-
+ Adds pagination / per page setting
|
37
|
-
+ Restores column sorting functionality
|
38
|
-
|
39
|
-
**Version 0.7.0**
|
40
|
-
+ Sidekiq 4.2 and 5 now supported
|
41
|
-
+ Added full support for ActiveJob
|
42
|
-
+ Updated Web UI
|
43
|
-
+ Styling updated to stay consistent with Sidekiq UI
|
44
|
-
+ Added header sorting
|
45
|
-
+ Fixed argument formatting
|
46
|
-
+ Times now display using natural language via ChronicDuration
|
47
|
-
+ Test suite fixed
|
48
|
-
|
49
|
-
**Version 0.6.0**
|
50
|
-
+ Updated Web UI
|
51
|
-
+ Will have all job statuses, previously it was showing only :working status
|
52
|
-
+ Bootstrap labels instead of badges for status
|
53
|
-
+ Added Arguments column to statuses page
|
54
|
-
+ New :interrupted status added
|
55
|
-
+ Added way to specify :expiration for Sidekiq::Status::ClientMiddleware
|
56
|
-
+ Bug fixes & Code cleanup
|
57
|
-
|
58
|
-
**Version 0.5.3**
|
59
|
-
+ some tweaks in web UI, separate Redis namespace
|
60
|
-
|
61
|
-
**Version 0.5.2**
|
62
|
-
+ Sidekiq versions up to 3.3.* supported, jobs sorting options in web UI, more ruby versions
|
63
|
-
|
64
|
-
**Version 0.5.1**
|
65
|
-
+ dependencies versions requirements relaxed
|
66
|
-
|
67
|
-
**Version 0.5.0**
|
68
|
-
+ Sidekiq v3 support, Redis pools support
|
69
|
-
|
70
|
-
**Version 0.4.0**
|
71
|
-
+ WebUI added, per-worker expiration setting enabled
|
9
|
+
See https://github.com/utgarda/sidekiq-status/blob/master/CHANGELOG.md.
|
data/README.md
CHANGED
@@ -1,16 +1,11 @@
|
|
1
1
|
# Sidekiq::Status
|
2
|
-
[![Gem Version](https://badge.fury.io/rb/sidekiq-status.svg)](
|
3
|
-
[![
|
4
|
-
[![
|
5
|
-
[![Dependency Status](https://gemnasium.com/utgarda/sidekiq-status.svg)](https://gemnasium.com/utgarda/sidekiq-status)
|
6
|
-
[![Inline docs](http://inch-ci.org/github/utgarda/sidekiq-status.svg?branch=master)](http://inch-ci.org/github/utgarda/sidekiq-status)
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/sidekiq-status.svg)](https://badge.fury.io/rb/sidekiq-status)
|
3
|
+
[![Build Status](https://www.travis-ci.com/kenaniah/sidekiq-status.svg?branch=main)](https://www.travis-ci.com/github/kenaniah/sidekiq-status)
|
4
|
+
[![Inline docs](https://inch-ci.org/github/kenaniah/sidekiq-status.svg?branch=main)](https://inch-ci.org/github/kenaniah/sidekiq-status)
|
7
5
|
|
8
|
-
|
9
|
-
by [resque-status](http://github.com/quirkey/resque-status) and mostly copying its features, using Sidekiq's middleware.
|
6
|
+
Sidekiq-status is an extension to [Sidekiq](https://github.com/mperham/sidekiq) that tracks information about your Sidekiq and provides a UI to that purpose. It was inspired by [resque-status](https://github.com/quirkey/resque-status).
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
Supports the latest versions of Sidekiq and all the way back to 3.x.
|
8
|
+
Requires Ruby 2.6+ and Sidekiq 5.0+ or newer.
|
14
9
|
|
15
10
|
## Installation
|
16
11
|
|
@@ -20,18 +15,18 @@ Add this line to your application's Gemfile:
|
|
20
15
|
gem 'sidekiq-status'
|
21
16
|
```
|
22
17
|
|
23
|
-
And then execute:
|
24
|
-
|
25
|
-
```bash
|
26
|
-
$ bundle
|
27
|
-
```
|
28
|
-
|
29
18
|
Or install it yourself as:
|
30
19
|
|
31
20
|
```bash
|
32
21
|
gem install sidekiq-status
|
33
22
|
```
|
34
23
|
|
24
|
+
### Migrating to Version 2.x from 1.x
|
25
|
+
|
26
|
+
Version 2.0.0 was published in order to add support for Ruby 3.0 and Sidekiq 6.x and to remove support for versions of both that are now end-of-life. You should be able to upgrade cleanly from version 1.x to 2.x provided you are running Sidekiq 5.x or newer.
|
27
|
+
|
28
|
+
Sidekiq-status version 1.1.4 provides support all the way back to Sidekiq 3.x and was maintained at https://github.com/utgarda/sidekiq-status/.
|
29
|
+
|
35
30
|
## Setup Checklist
|
36
31
|
|
37
32
|
To get started:
|
@@ -63,9 +58,7 @@ Sidekiq.configure_server do |config|
|
|
63
58
|
end
|
64
59
|
```
|
65
60
|
|
66
|
-
|
67
|
-
|
68
|
-
After that you can use your jobs as usual. You need to also include the `Sidekiq::Status::Worker` module in your jobs if you want the additional functionality of tracking progress and storing / retrieving job data.
|
61
|
+
Include the `Sidekiq::Status::Worker` module in your jobs if you want the additional functionality of tracking progress and storing / retrieving job data.
|
69
62
|
|
70
63
|
``` ruby
|
71
64
|
class MyJob
|
@@ -78,7 +71,7 @@ class MyJob
|
|
78
71
|
end
|
79
72
|
```
|
80
73
|
|
81
|
-
|
74
|
+
Note: _only jobs that include `Sidekiq::Status::Worker`_ will have their statuses tracked.
|
82
75
|
|
83
76
|
To overwrite expiration on a per-worker basis, write an expiration method like the one below:
|
84
77
|
|
@@ -105,7 +98,7 @@ As sidekiq-status stores information about jobs in Redis, it is necessary to set
|
|
105
98
|
|
106
99
|
As explained above, the default expiration may also be overridden on a per-job basis by defining it within the job itself via a method called `#expiration`.
|
107
100
|
|
108
|
-
The expiration time set will be used as the [Redis expire time](
|
101
|
+
The expiration time set will be used as the [Redis expire time](https://redis.io/commands/expire), which is also known as the TTL (time to live). Once the expiration time has passed, all information about the job's status and any custom data stored via sidekiq-status will disappear.
|
109
102
|
|
110
103
|
It is advised that you set the expiration time greater than the amount of time required to complete the job.
|
111
104
|
|
@@ -131,7 +124,7 @@ Important: If you try any of the above status method after the expiration time,
|
|
131
124
|
|
132
125
|
### ActiveJob Support
|
133
126
|
|
134
|
-
|
127
|
+
This gem also supports ActiveJob jobs. Their status will be tracked automatically.
|
135
128
|
|
136
129
|
To also enable job progress tracking and data storage features, simply add the `Sidekiq::Status::Worker` module to your base class, like below:
|
137
130
|
|
@@ -216,11 +209,11 @@ This gem provides an extension to Sidekiq's web interface with an index at `/sta
|
|
216
209
|
|
217
210
|
![Sidekiq Status Web](web/sidekiq-status-web.png)
|
218
211
|
|
219
|
-
|
212
|
+
Information for an individual job may be found at `/statuses/:job_id`.
|
220
213
|
|
221
214
|
![Sidekiq Status Web](web/sidekiq-status-single-web.png)
|
222
215
|
|
223
|
-
|
216
|
+
Note: _only jobs that include `Sidekiq::Status::Worker`_ will be reported in the web interface.
|
224
217
|
|
225
218
|
#### Adding the Web Interface
|
226
219
|
|
@@ -90,7 +90,7 @@ module Sidekiq::Status::Storage
|
|
90
90
|
# - end: end score (i.e. +inf or a unix timestamp)
|
91
91
|
# - offset: current progress through (all) jobs (e.g.: 100 if you want jobs from 100 to BATCH_LIMIT)
|
92
92
|
def schedule_batch(options)
|
93
|
-
options[:conn].zrangebyscore "schedule", options[:start], options[:end],
|
93
|
+
options[:conn].zrangebyscore "schedule", options[:start], options[:end], limit: [options[:offset], BATCH_LIMIT]
|
94
94
|
end
|
95
95
|
|
96
96
|
# Searches the jobs Array for the job_id
|
data/lib/sidekiq-status/web.rb
CHANGED
@@ -136,7 +136,7 @@ module Sidekiq::Status
|
|
136
136
|
job = Sidekiq::Status::get_all params['jid']
|
137
137
|
|
138
138
|
if job.empty?
|
139
|
-
halt [404, {"Content-Type" => "text/html"}, [erb(sidekiq_status_template(:status_not_found))]]
|
139
|
+
throw :halt, [404, {"Content-Type" => "text/html"}, [erb(sidekiq_status_template(:status_not_found))]]
|
140
140
|
else
|
141
141
|
@status = add_details_to_status(job)
|
142
142
|
erb(sidekiq_status_template(:status))
|
@@ -148,19 +148,23 @@ module Sidekiq::Status
|
|
148
148
|
job = Sidekiq::RetrySet.new.find_job(params[:jid])
|
149
149
|
job ||= Sidekiq::DeadSet.new.find_job(params[:jid])
|
150
150
|
job.retry if job
|
151
|
-
halt [302, { "Location" => request.referer }, []]
|
151
|
+
throw :halt, [302, { "Location" => request.referer }, []]
|
152
152
|
end
|
153
153
|
|
154
154
|
# Removes a completed job from the status list
|
155
155
|
app.delete '/statuses' do
|
156
156
|
Sidekiq::Status.delete(params[:jid])
|
157
|
-
halt [302, { "Location" => request.referer }, []]
|
157
|
+
throw :halt, [302, { "Location" => request.referer }, []]
|
158
158
|
end
|
159
159
|
end
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
163
|
-
|
163
|
+
unless defined?(Sidekiq::Web)
|
164
|
+
require 'delegate' # Needed for sidekiq 5.x
|
165
|
+
require 'sidekiq/web'
|
166
|
+
end
|
167
|
+
|
164
168
|
Sidekiq::Web.register(Sidekiq::Status::Web)
|
165
169
|
["per_page", "sort_by", "sort_dir", "status"].each do |key|
|
166
170
|
Sidekiq::WebHelpers::SAFE_QPARAMS.push(key)
|
data/sidekiq-status.gemspec
CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |gem|
|
|
5
5
|
gem.authors = ['Evgeniy Tsvigun', 'Kenaniah Cerny']
|
6
6
|
gem.email = ['utgarda@gmail.com', 'kenaniah@gmail.com']
|
7
7
|
gem.summary = 'An extension to the sidekiq message processing to track your jobs'
|
8
|
-
gem.homepage = 'http://github.com/
|
8
|
+
gem.homepage = 'http://github.com/kenaniah/sidekiq-status'
|
9
9
|
gem.license = 'MIT'
|
10
10
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.require_paths = ['lib']
|
15
15
|
gem.version = Sidekiq::Status::VERSION
|
16
16
|
|
17
|
-
gem.add_dependency 'sidekiq', '>=
|
17
|
+
gem.add_dependency 'sidekiq', '>= 5.0'
|
18
18
|
gem.add_dependency 'chronic_duration'
|
19
19
|
gem.add_development_dependency 'appraisal'
|
20
20
|
gem.add_development_dependency 'colorize'
|
@@ -105,7 +105,7 @@ describe Sidekiq::Status do
|
|
105
105
|
second_job = LongJob.perform_in(3600)
|
106
106
|
expect(second_job).to eq(job_id_1)
|
107
107
|
|
108
|
-
initial_schedule = redis.zrange "schedule", 0, -1,
|
108
|
+
initial_schedule = redis.zrange "schedule", 0, -1, withscores: true
|
109
109
|
expect(initial_schedule.size).to be(2)
|
110
110
|
expect(initial_schedule.select {|scheduled_job| JSON.parse(scheduled_job[0])["jid"] == job_id }.size).to be(1)
|
111
111
|
|
@@ -113,7 +113,7 @@ describe Sidekiq::Status do
|
|
113
113
|
# Unused, therefore unfound => false
|
114
114
|
expect(Sidekiq::Status.cancel(unused_id)).to be_falsey
|
115
115
|
|
116
|
-
remaining_schedule = redis.zrange "schedule", 0, -1,
|
116
|
+
remaining_schedule = redis.zrange "schedule", 0, -1, withscores: true
|
117
117
|
expect(remaining_schedule.size).to be(initial_schedule.size - 1)
|
118
118
|
expect(remaining_schedule.select {|scheduled_job| JSON.parse(scheduled_job[0])["jid"] == job_id }.size).to be(0)
|
119
119
|
end
|
@@ -126,14 +126,14 @@ describe Sidekiq::Status do
|
|
126
126
|
returned_job_id = LongJob.perform_at(scheduled_time)
|
127
127
|
expect(returned_job_id).to eq(job_id)
|
128
128
|
|
129
|
-
initial_schedule = redis.zrange "schedule", 0, -1,
|
129
|
+
initial_schedule = redis.zrange "schedule", 0, -1, withscores: true
|
130
130
|
expect(initial_schedule.size).to be(1)
|
131
131
|
# wrong time, therefore unfound => false
|
132
132
|
expect(Sidekiq::Status.cancel(returned_job_id, (scheduled_time + 1))).to be_falsey
|
133
|
-
expect((redis.zrange "schedule", 0, -1,
|
133
|
+
expect((redis.zrange "schedule", 0, -1, withscores: true).size).to be(1)
|
134
134
|
# same id, same time, deletes
|
135
135
|
expect(Sidekiq::Status.cancel(returned_job_id, (scheduled_time))).to be_truthy
|
136
|
-
expect(redis.zrange "schedule", 0, -1,
|
136
|
+
expect(redis.zrange "schedule", 0, -1, withscores: true).to be_empty
|
137
137
|
end
|
138
138
|
end
|
139
139
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-status
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evgeniy Tsvigun
|
8
8
|
- Kenaniah Cerny
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-06-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sidekiq
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '5.0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
27
|
+
version: '5.0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: chronic_duration
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
- - ">="
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
|
-
description:
|
126
|
+
description:
|
127
127
|
email:
|
128
128
|
- utgarda@gmail.com
|
129
129
|
- kenaniah@gmail.com
|
@@ -141,9 +141,8 @@ files:
|
|
141
141
|
- LICENSE
|
142
142
|
- README.md
|
143
143
|
- Rakefile
|
144
|
-
- gemfiles/sidekiq_3.x.gemfile
|
145
|
-
- gemfiles/sidekiq_4.x.gemfile
|
146
144
|
- gemfiles/sidekiq_5.x.gemfile
|
145
|
+
- gemfiles/sidekiq_6.x.gemfile
|
147
146
|
- lib/sidekiq-status.rb
|
148
147
|
- lib/sidekiq-status/client_middleware.rb
|
149
148
|
- lib/sidekiq-status/server_middleware.rb
|
@@ -168,11 +167,11 @@ files:
|
|
168
167
|
- web/views/status.erb
|
169
168
|
- web/views/status_not_found.erb
|
170
169
|
- web/views/statuses.erb
|
171
|
-
homepage: http://github.com/
|
170
|
+
homepage: http://github.com/kenaniah/sidekiq-status
|
172
171
|
licenses:
|
173
172
|
- MIT
|
174
173
|
metadata: {}
|
175
|
-
post_install_message:
|
174
|
+
post_install_message:
|
176
175
|
rdoc_options: []
|
177
176
|
require_paths:
|
178
177
|
- lib
|
@@ -187,8 +186,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
187
186
|
- !ruby/object:Gem::Version
|
188
187
|
version: '0'
|
189
188
|
requirements: []
|
190
|
-
rubygems_version: 3.
|
191
|
-
signing_key:
|
189
|
+
rubygems_version: 3.2.15
|
190
|
+
signing_key:
|
192
191
|
specification_version: 4
|
193
192
|
summary: An extension to the sidekiq message processing to track your jobs
|
194
193
|
test_files:
|