sidekiq-status 0.5.1 → 0.5.2
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/.travis.yml +13 -0
- data/CHANGELOG +1 -0
- data/gemfiles/Gemfile.sidekiq-2 +5 -0
- data/lib/sidekiq-status/version.rb +1 -1
- data/lib/sidekiq-status/web.rb +37 -1
- data/sidekiq-status.gemspec +2 -0
- data/spec/lib/sidekiq-status/web_spec.rb +34 -0
- data/web/views/statuses.erb +12 -7
- metadata +34 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6b4364f29e4cebdacba46d6266532b800cd0626
|
4
|
+
data.tar.gz: cca02102cb3f156fc54ae6bfd7c737e6bbad9d46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e124dcb4344613124d2d3b8d58f666e7c1bf9a1c41da241db09bce9823de03486bb6e4c916fc4c5f9dbcd3bc73278715092f7709d5cc18d1f7c82b618607bbf
|
7
|
+
data.tar.gz: e30d1f12e9388db15a59791aabb09e7adba4a461441c24b3a73bf34d4262c4cfb76edf850488bb66ba58800a7bec173b6233dba15412351ea67af8b2996d4ebe
|
data/.travis.yml
CHANGED
data/CHANGELOG
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
Version 0.5.2:Sidekiq versions up to 3.3.* supported, jobs sorting options in web UI, more ruby versions
|
1
2
|
Version 0.5.1:dependencies versions requirements relaxed
|
2
3
|
Version 0.5.0:Sidekiq v3 support, redis pools support
|
3
4
|
Version 0.4.0:WebUI added, per-worker expiration setting enabled
|
data/lib/sidekiq-status/web.rb
CHANGED
@@ -19,7 +19,13 @@ module Sidekiq::Status
|
|
19
19
|
queue = Sidekiq::Workers.new
|
20
20
|
@statuses = []
|
21
21
|
|
22
|
-
queue.each do |
|
22
|
+
queue.each do |*args|
|
23
|
+
work = if args[1].is_a?(Hash)
|
24
|
+
# For sidekiq < 3
|
25
|
+
args[1]
|
26
|
+
else
|
27
|
+
args[2]
|
28
|
+
end
|
23
29
|
job = Struct.new(:jid, :klass, :args).new(work["payload"]["jid"], work["payload"]["class"], work["payload"]["args"])
|
24
30
|
status = Sidekiq::Status::get_all job.jid
|
25
31
|
next if !status || status.count < 2
|
@@ -30,6 +36,36 @@ module Sidekiq::Status
|
|
30
36
|
@statuses << OpenStruct.new(status)
|
31
37
|
end
|
32
38
|
|
39
|
+
if ["worker", "status", "update_time", "pct_complete", "message"].include?(params[:sort_by])
|
40
|
+
sort_by = params[:sort_by]
|
41
|
+
else
|
42
|
+
sort_by = "worker"
|
43
|
+
end
|
44
|
+
|
45
|
+
sort_dir = "asc"
|
46
|
+
|
47
|
+
if params[:sort_dir] == "asc"
|
48
|
+
@statuses = @statuses.sort { |x,y| x.send(sort_by) <=> y.send(sort_by) }
|
49
|
+
else # DESC
|
50
|
+
sort_dir = "desc"
|
51
|
+
@statuses = @statuses.sort { |y,x| x.send(sort_by) <=> y.send(sort_by) }
|
52
|
+
end
|
53
|
+
|
54
|
+
@headers = [
|
55
|
+
{ id: "worker", name: "Worker/jid", class: nil, url: nil},
|
56
|
+
{ id: "status", name: "Status", class: nil, url: nil},
|
57
|
+
{ id: "update_time", name: "Last Updated", class: nil, url: nil},
|
58
|
+
{ id: "pct_complete", name: "Progress", class: nil, url: nil},
|
59
|
+
{ id: "message", name: "Message", class: nil, url: nil}
|
60
|
+
]
|
61
|
+
|
62
|
+
@headers.each do |h|
|
63
|
+
params["sort_by"] = h[:id]
|
64
|
+
params["sort_dir"] = (sort_by == h[:id] && sort_dir == "asc") ? "desc" : "asc"
|
65
|
+
h[:url] = "statuses?" + params.map {|k,v| "#{k}=#{v}" }.join("&")
|
66
|
+
h[:class] = "sorted_#{sort_dir}" if sort_by == h[:id]
|
67
|
+
end
|
68
|
+
|
33
69
|
erb(sidekiq_status_template(:statuses))
|
34
70
|
end
|
35
71
|
end
|
data/sidekiq-status.gemspec
CHANGED
@@ -15,6 +15,8 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.version = Sidekiq::Status::VERSION
|
16
16
|
|
17
17
|
gem.add_dependency 'sidekiq', '>= 2.7', '< 3.4'
|
18
|
+
gem.add_development_dependency 'rack-test'
|
18
19
|
gem.add_development_dependency 'rake'
|
19
20
|
gem.add_development_dependency 'rspec'
|
21
|
+
gem.add_development_dependency 'sinatra'
|
20
22
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'sidekiq-status/web'
|
3
|
+
require 'rack/test'
|
4
|
+
|
5
|
+
describe 'sidekiq status web' do
|
6
|
+
include Rack::Test::Methods
|
7
|
+
|
8
|
+
let!(:redis) { Sidekiq.redis { |conn| conn } }
|
9
|
+
let!(:job_id) { SecureRandom.hex(12) }
|
10
|
+
|
11
|
+
# Clean Redis before each test
|
12
|
+
# Seems like flushall has no effect on recently published messages,
|
13
|
+
# so we should wait till they expire
|
14
|
+
before { redis.flushall; sleep 0.1 }
|
15
|
+
|
16
|
+
def app
|
17
|
+
Sidekiq::Web
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'shows a job in progress' do
|
21
|
+
allow(SecureRandom).to receive(:hex).once.and_return(job_id)
|
22
|
+
|
23
|
+
start_server do
|
24
|
+
capture_status_updates(2) do
|
25
|
+
expect(LongJob.perform_async(1)).to eq(job_id)
|
26
|
+
end
|
27
|
+
|
28
|
+
get '/statuses'
|
29
|
+
expect(last_response.status).to eq(200)
|
30
|
+
expect(last_response.body).to match(/#{job_id}/)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
data/web/views/statuses.erb
CHANGED
@@ -1,13 +1,18 @@
|
|
1
|
-
<
|
2
|
-
|
1
|
+
<style>
|
2
|
+
.sorted_asc:after{
|
3
|
+
content: " ↑";
|
4
|
+
}
|
5
|
+
.sorted_desc:after{
|
6
|
+
content: " ↓";
|
7
|
+
}
|
8
|
+
</style>
|
3
9
|
|
10
|
+
<h3 class="wi">Recent job statuses</h3>
|
4
11
|
<table class="table table-striped table-bordered">
|
5
12
|
<tr>
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
<th>Progress</th>
|
10
|
-
<th>Message</th>
|
13
|
+
<% @headers.each do |header| %>
|
14
|
+
<th><a href="<%= header[:url] %>" class="<%= header[:class] %>"><%= header[:name] %></a></th>
|
15
|
+
<% end %>
|
11
16
|
</tr>
|
12
17
|
<% @statuses.each do |container| %>
|
13
18
|
<tr>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-status
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evgeniy Tsvigun
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sidekiq
|
@@ -30,6 +30,20 @@ dependencies:
|
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '3.4'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rack-test
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
33
47
|
- !ruby/object:Gem::Dependency
|
34
48
|
name: rake
|
35
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,6 +72,20 @@ dependencies:
|
|
58
72
|
- - ">="
|
59
73
|
- !ruby/object:Gem::Version
|
60
74
|
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: sinatra
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
61
89
|
description:
|
62
90
|
email:
|
63
91
|
- utgarda@gmail.com
|
@@ -73,6 +101,7 @@ files:
|
|
73
101
|
- LICENSE
|
74
102
|
- README.md
|
75
103
|
- Rakefile
|
104
|
+
- gemfiles/Gemfile.sidekiq-2
|
76
105
|
- lib/sidekiq-status.rb
|
77
106
|
- lib/sidekiq-status/client_middleware.rb
|
78
107
|
- lib/sidekiq-status/server_middleware.rb
|
@@ -85,6 +114,7 @@ files:
|
|
85
114
|
- spec/lib/sidekiq-status/client_middleware_spec.rb
|
86
115
|
- spec/lib/sidekiq-status/server_middleware_spec.rb
|
87
116
|
- spec/lib/sidekiq-status/testing_spec.rb
|
117
|
+
- spec/lib/sidekiq-status/web_spec.rb
|
88
118
|
- spec/lib/sidekiq-status/worker_spec.rb
|
89
119
|
- spec/lib/sidekiq-status_spec.rb
|
90
120
|
- spec/spec_helper.rb
|
@@ -110,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
140
|
version: '0'
|
111
141
|
requirements: []
|
112
142
|
rubyforge_project:
|
113
|
-
rubygems_version: 2.
|
143
|
+
rubygems_version: 2.4.5
|
114
144
|
signing_key:
|
115
145
|
specification_version: 4
|
116
146
|
summary: An extension to the sidekiq message processing to track your jobs
|
@@ -118,6 +148,7 @@ test_files:
|
|
118
148
|
- spec/lib/sidekiq-status/client_middleware_spec.rb
|
119
149
|
- spec/lib/sidekiq-status/server_middleware_spec.rb
|
120
150
|
- spec/lib/sidekiq-status/testing_spec.rb
|
151
|
+
- spec/lib/sidekiq-status/web_spec.rb
|
121
152
|
- spec/lib/sidekiq-status/worker_spec.rb
|
122
153
|
- spec/lib/sidekiq-status_spec.rb
|
123
154
|
- spec/spec_helper.rb
|