sidekiq-status 3.0.3 → 4.0.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 +4 -4
- data/.devcontainer/Dockerfile +2 -0
- data/.devcontainer/README.md +57 -0
- data/.devcontainer/devcontainer.json +55 -0
- data/.devcontainer/docker-compose.yml +19 -0
- data/.github/workflows/ci.yaml +9 -6
- data/Appraisals +14 -6
- data/CHANGELOG.md +12 -0
- data/Dockerfile +5 -0
- data/README.md +756 -41
- data/Rakefile +153 -0
- data/docker-compose.yml +15 -0
- data/gemfiles/{sidekiq_6.1.gemfile → sidekiq_7.0.gemfile} +1 -1
- data/gemfiles/sidekiq_7.3.gemfile +7 -0
- data/gemfiles/sidekiq_8.0.gemfile +7 -0
- data/gemfiles/{sidekiq_6.x.gemfile → sidekiq_8.x.gemfile} +1 -1
- data/lib/sidekiq-status/client_middleware.rb +4 -3
- data/lib/sidekiq-status/helpers.rb +94 -0
- data/lib/sidekiq-status/server_middleware.rb +6 -21
- data/lib/sidekiq-status/storage.rb +12 -3
- data/lib/sidekiq-status/version.rb +1 -1
- data/lib/sidekiq-status/web.rb +67 -93
- data/lib/sidekiq-status/worker.rb +6 -10
- data/lib/sidekiq-status.rb +21 -5
- data/sidekiq-status.gemspec +7 -1
- data/spec/environment.rb +12 -1
- data/spec/lib/sidekiq-status/client_middleware_spec.rb +8 -0
- data/spec/lib/sidekiq-status/server_middleware_spec.rb +13 -0
- data/spec/lib/sidekiq-status/web_spec.rb +72 -3
- data/spec/lib/sidekiq-status/worker_spec.rb +3 -3
- data/spec/lib/sidekiq-status_spec.rb +20 -3
- data/spec/spec_helper.rb +3 -8
- data/spec/support/test_jobs.rb +11 -0
- data/spec/test_environment.rb +1 -0
- data/web/assets/statuses.css +124 -0
- data/web/assets/statuses.js +24 -0
- data/web/views/status.erb +131 -93
- data/web/views/status_not_found.erb +1 -1
- data/web/views/statuses.erb +23 -79
- metadata +93 -14
data/web/views/status.erb
CHANGED
@@ -1,117 +1,155 @@
|
|
1
1
|
<% require 'cgi'; def h(v); CGI.escape_html(v.to_s); end %>
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
font-weight: bold;
|
13
|
-
font-size: 14px;
|
14
|
-
}
|
15
|
-
</style>
|
16
|
-
|
17
|
-
<h3>
|
18
|
-
Job Status: <%= h @status["jid"] %>
|
2
|
+
<%
|
3
|
+
def format_iso_timestamp(timestamp)
|
4
|
+
return "<i>n/a</i>" unless timestamp && !timestamp.empty?
|
5
|
+
Time.at(timestamp.to_i).utc.iso8601
|
6
|
+
end
|
7
|
+
%>
|
8
|
+
<link rel="stylesheet" href="<%= root_path %>assets/statuses.css" />
|
9
|
+
<script type="text/javascript" src="<%= root_path %>assets/statuses.js"></script>
|
10
|
+
<h3 class="status-header">
|
11
|
+
Job Status
|
19
12
|
<span class='label label-<%= h @status["label"] %>'>
|
20
13
|
<%= h @status["status"] %>
|
21
14
|
</span>
|
22
15
|
</h3>
|
23
16
|
|
24
|
-
<div class="progress
|
25
|
-
<div class="progress-bar" role="progressbar" aria-valuenow="<%= @status["pct_complete"].to_i %>" aria-valuemin="0" aria-valuemax="100"
|
26
|
-
<div class="progress-percentage">
|
17
|
+
<div class="progress h-30px">
|
18
|
+
<div class="progress-bar" role="progressbar" aria-valuenow="<%= @status["pct_complete"].to_i %>" aria-valuemin="0" aria-valuemax="100">
|
19
|
+
<div class="progress-percentage fs-lg">
|
27
20
|
<%= @status["pct_complete"].to_i %>%
|
28
21
|
</div>
|
29
22
|
</div>
|
30
23
|
</div>
|
31
24
|
|
32
|
-
<
|
33
|
-
<div class="panel-body">
|
34
|
-
<h4><%= h @status["worker"] %></h4>
|
35
|
-
|
36
|
-
<div class="row">
|
37
|
-
<div class="col-sm-2">
|
38
|
-
<strong>Arguments</strong>
|
39
|
-
</div>
|
40
|
-
<div class="col-sm-10">
|
41
|
-
<p><%= @status["args"].empty? ? "<i>none</i>" : h(@status["args"]) %></p>
|
42
|
-
</div>
|
43
|
-
</div>
|
25
|
+
<br />
|
44
26
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
</div>
|
49
|
-
<div class="col-sm-10">
|
50
|
-
<p><%= h(@status["message"]) || "<i>none</i>" %></p>
|
51
|
-
</div>
|
52
|
-
</div>
|
27
|
+
<div class="header-container">
|
28
|
+
<h3>Job Details</h3>
|
29
|
+
</div>
|
53
30
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
31
|
+
<table class="table table-bordered table-striped status-table">
|
32
|
+
<tbody>
|
33
|
+
<tr>
|
34
|
+
<th>Job ID</th>
|
35
|
+
<td><code><%= h @status["jid"] %></code></td>
|
36
|
+
</tr>
|
37
|
+
<tr>
|
38
|
+
<th>Job</th>
|
39
|
+
<td><%= h @status["worker"] %></td>
|
40
|
+
</tr>
|
41
|
+
<tr>
|
42
|
+
<th>Arguments</th>
|
43
|
+
<td>
|
44
|
+
<% if @status["args"] && !@status["args"].empty? %>
|
45
|
+
<% args_content = h(@status["args"]) %>
|
46
|
+
<% if args_content.include?("\n") %>
|
47
|
+
<div class="multiline"><%= args_content %></div>
|
48
|
+
<% else %>
|
49
|
+
<%= args_content %>
|
50
|
+
<% end %>
|
63
51
|
<% else %>
|
64
|
-
|
52
|
+
<i>none</i>
|
65
53
|
<% end %>
|
66
|
-
</
|
67
|
-
</
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
54
|
+
</td>
|
55
|
+
</tr>
|
56
|
+
<tr>
|
57
|
+
<th>Status</th>
|
58
|
+
<td><span class='label label-<%= h @status["label"] %>'><%= h @status["status"] %></span></td>
|
59
|
+
</tr>
|
60
|
+
<tr>
|
61
|
+
<th>Elapsed Time</th>
|
62
|
+
<td>
|
63
|
+
<% unless @status["elapsed"].nil? %>
|
64
|
+
<%= ChronicDuration.output(@status["elapsed"].to_i, :weeks => true, :units => 2) || '0 secs' %>
|
65
|
+
<% else %>
|
66
|
+
<i>n/a</i>
|
78
67
|
<% end %>
|
79
|
-
</
|
80
|
-
</
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
68
|
+
</td>
|
69
|
+
</tr>
|
70
|
+
<tr>
|
71
|
+
<th>Progress</th>
|
72
|
+
<td>
|
73
|
+
<%= @status["pct_complete"].to_i %>%
|
74
|
+
<% if @status["at"] && @status["total"] %>
|
75
|
+
(<%= @status["at"] %> of <%= @status["total"] %>)
|
76
|
+
<% end %>
|
77
|
+
</td>
|
78
|
+
</tr>
|
79
|
+
<% if @status["status"] == "working" %>
|
80
|
+
<tr>
|
81
|
+
<th>ETA</th>
|
82
|
+
<td>
|
89
83
|
<% if @status["eta"] %>
|
90
84
|
<%= ChronicDuration.output(@status["eta"].to_i, :weeks => true, :units => 2) %>
|
85
|
+
<% else %>
|
86
|
+
<i>n/a</i>
|
91
87
|
<% end %>
|
92
|
-
</
|
93
|
-
</
|
94
|
-
</div>
|
95
|
-
|
96
|
-
<% if @status["custom"].any? %>
|
97
|
-
<hr>
|
98
|
-
<% @status["custom"].each do |key, val| %>
|
99
|
-
<div class="row">
|
100
|
-
<div class="col-sm-2">
|
101
|
-
<strong><%= key %></strong>
|
102
|
-
</div>
|
103
|
-
<div class="col-sm-10">
|
104
|
-
<% if val && val.include?("\n") %>
|
105
|
-
<pre><%= h val %></pre>
|
106
|
-
<% else %>
|
107
|
-
<p><%= h(val) || "<i>none</i>" %></p>
|
108
|
-
<% end %>
|
109
|
-
</div>
|
110
|
-
</div>
|
88
|
+
</td>
|
89
|
+
</tr>
|
111
90
|
<% end %>
|
112
|
-
|
91
|
+
<tr>
|
92
|
+
<th>Message</th>
|
93
|
+
<td>
|
94
|
+
<% if @status["message"] && !@status["message"].empty? %>
|
95
|
+
<%= h(@status["message"]) %>
|
96
|
+
<% else %>
|
97
|
+
<i>none</i>
|
98
|
+
<% end %>
|
99
|
+
</td>
|
100
|
+
</tr>
|
101
|
+
<tr>
|
102
|
+
<th>Enqueued At</th>
|
103
|
+
<td class="timestamp"><%= format_iso_timestamp(@status["enqueued_at"]) %></td>
|
104
|
+
</tr>
|
105
|
+
<tr>
|
106
|
+
<th>Started At</th>
|
107
|
+
<td class="timestamp"><%= format_iso_timestamp(@status["started_at"]) %></td>
|
108
|
+
</tr>
|
109
|
+
<tr>
|
110
|
+
<th>Last Updated</th>
|
111
|
+
<td class="timestamp">
|
112
|
+
<%= format_iso_timestamp(@status["updated_at"]) %>
|
113
|
+
<% if @status["updated_at"] %>
|
114
|
+
<br><small class="text-muted">
|
115
|
+
<% secs = Time.now.to_i - @status["updated_at"].to_i %>
|
116
|
+
<% if secs > 0 %>
|
117
|
+
(<%= ChronicDuration.output(secs, :weeks => true, :units => 2) %> ago)
|
118
|
+
<% else %>
|
119
|
+
(now)
|
120
|
+
<% end %>
|
121
|
+
</small>
|
122
|
+
<% end %>
|
123
|
+
</td>
|
124
|
+
</tr>
|
125
|
+
<tr>
|
126
|
+
<th>Ended At</th>
|
127
|
+
<td class="timestamp"><%= format_iso_timestamp(@status["ended_at"]) %></td>
|
128
|
+
</tr>
|
129
|
+
</tbody>
|
130
|
+
</table>
|
131
|
+
|
132
|
+
<% if @status["custom"] && @status["custom"].any? %>
|
133
|
+
<div class="header-container">
|
134
|
+
<h3>Custom Data</h3>
|
113
135
|
</div>
|
114
|
-
|
136
|
+
<table class="table table-bordered table-striped status-table">
|
137
|
+
<% @status["custom"].each do |key, val| %>
|
138
|
+
<tr>
|
139
|
+
<th><%= h key %></th>
|
140
|
+
<td>
|
141
|
+
<% if val && val.to_s.include?("\n") %>
|
142
|
+
<div class="multiline"><%= h val %></div>
|
143
|
+
<% else %>
|
144
|
+
<%= h(val) || "<i>none</i>" %>
|
145
|
+
<% end %>
|
146
|
+
</td>
|
147
|
+
</tr>
|
148
|
+
<% end %>
|
149
|
+
</table>
|
150
|
+
<% end %>
|
151
|
+
|
152
|
+
<br />
|
115
153
|
|
116
154
|
<a href="<%= root_path %>statuses">
|
117
155
|
<small>← back to all statuses</small>
|
data/web/views/statuses.erb
CHANGED
@@ -1,77 +1,24 @@
|
|
1
1
|
<% require 'cgi'; def h(v); CGI.escape_html(v.to_s); end %>
|
2
|
-
<
|
3
|
-
.
|
4
|
-
|
5
|
-
}
|
6
|
-
.bar {
|
7
|
-
background-color: #2897cb;
|
8
|
-
color: white;
|
9
|
-
text-shadow: 0 0 0;
|
10
|
-
}
|
11
|
-
.message {
|
12
|
-
text-shadow: 0 0 5px white;
|
13
|
-
font-weight: bold; padding-left: 4px;
|
14
|
-
color: #333;
|
15
|
-
}
|
16
|
-
.actions {
|
17
|
-
text-align: center;
|
18
|
-
}
|
19
|
-
.header {
|
20
|
-
text-align: center;
|
21
|
-
}
|
22
|
-
.header_update_time {
|
23
|
-
width: 10%;
|
24
|
-
}
|
25
|
-
.header_pct_complete {
|
26
|
-
width: 45%;
|
27
|
-
}
|
28
|
-
.btn-warning {
|
29
|
-
background-image: linear-gradient(#f0ad4e, #eea236)
|
30
|
-
}
|
31
|
-
.nav-container {
|
32
|
-
display: flex;
|
33
|
-
line-height: 45px;
|
34
|
-
}
|
35
|
-
.nav-container .pull-right {
|
36
|
-
float: none !important;
|
37
|
-
}
|
38
|
-
.nav-container .pagination {
|
39
|
-
display: flex;
|
40
|
-
align-items: center;
|
41
|
-
}
|
42
|
-
.nav-container .per-page, .filter-status {
|
43
|
-
display: flex;
|
44
|
-
align-items: center;
|
45
|
-
margin: 20px 0 20px 10px;
|
46
|
-
white-space: nowrap;
|
47
|
-
}
|
48
|
-
.nav-container .per-page SELECT {
|
49
|
-
margin: 0 0 0 5px;
|
50
|
-
}
|
51
|
-
</style>
|
52
|
-
<script>
|
53
|
-
function setPerPage(select){
|
54
|
-
window.location = select.options[select.selectedIndex].getAttribute('data-url')
|
55
|
-
}
|
56
|
-
</script>
|
57
|
-
<div style="display: flex; justify-content: space-between;">
|
2
|
+
<link rel="stylesheet" href="<%= root_path %>assets/statuses.css" />
|
3
|
+
<script type="text/javascript" src="<%= root_path %>assets/statuses.js"></script>
|
4
|
+
<div class="index-header">
|
58
5
|
<h3 class="wi">Recent job statuses</h3>
|
59
6
|
<div class="nav-container">
|
60
7
|
<%= erb :_paging, locals: { url: "#{root_path}statuses" } %>
|
61
8
|
<div class="filter-status">
|
62
|
-
Filter Status
|
63
|
-
<select class="form-control"
|
9
|
+
Filter Status:
|
10
|
+
<select class="form-control">
|
64
11
|
<% (['all', 'complete', 'failed', 'interrupted', 'queued', 'retrying', 'stopped', 'working']).each do |status| %>
|
65
|
-
<option data-url="?<%= qparams(status: status)%>" value="<%= status %>" <%= 'selected="selected"' if status == (
|
12
|
+
<option data-url="?<%= qparams(status: status)%>" value="<%= status %>" <%= 'selected="selected"' if status == (safe_url_params("status")) %>><%= status %></option>
|
66
13
|
<% end %>
|
67
14
|
</select>
|
68
15
|
</div>
|
69
16
|
|
70
17
|
<div class="per-page">
|
71
|
-
Per page
|
72
|
-
<select class="form-control"
|
18
|
+
Per page:
|
19
|
+
<select class="form-control">
|
73
20
|
<% (Sidekiq::Status::Web.per_page_opts + ['all']).each do |num| %>
|
74
|
-
<option data-url="?<%= qparams(page: 1, per_page: num)%>" value="<%= num %>" <%= 'selected="selected"' if num.to_s == (
|
21
|
+
<option data-url="?<%= qparams(page: 1, per_page: num)%>" value="<%= num %>" <%= 'selected="selected"' if num.to_s == (safe_url_params("per_page") || @count) %>><%= num %></option>
|
75
22
|
<% end %>
|
76
23
|
</select>
|
77
24
|
</div>
|
@@ -96,11 +43,11 @@ function setPerPage(select){
|
|
96
43
|
<td>
|
97
44
|
<div class='args' title='<%= h container["jid"] %>'><%= h container["args"] %></div>
|
98
45
|
</td>
|
99
|
-
<td
|
100
|
-
<
|
46
|
+
<td class='center'>
|
47
|
+
<span class='label label-<%= h container["label"] %>'><%= h container["status"] %></span>
|
101
48
|
</td>
|
102
|
-
<% secs = Time.now.to_i - container["
|
103
|
-
<td
|
49
|
+
<% secs = Time.now.to_i - container["updated_at"].to_i %>
|
50
|
+
<td class='center nowrap' title="<%= Time.at(container["updated_at"].to_i) %>">
|
104
51
|
<% if secs > 0 %>
|
105
52
|
<%= ChronicDuration.output(secs, :weeks => true, :units => 2) %> ago
|
106
53
|
<% else %>
|
@@ -108,23 +55,20 @@ function setPerPage(select){
|
|
108
55
|
<% end %>
|
109
56
|
</td>
|
110
57
|
<td>
|
111
|
-
<div class="progress
|
112
|
-
<div class=
|
113
|
-
|
114
|
-
|
115
|
-
<% if container["pct_complete"].to_i > 0 %>
|
116
|
-
<div class="bar message" style="width: <%= h container["pct_complete"] %>%;">
|
117
|
-
<%= h container["pct_complete"] %>%
|
58
|
+
<div class="progress" class="mb-0">
|
59
|
+
<div class="progress-bar" role="progressbar" aria-valuenow="<%= container["pct_complete"].to_i %>" aria-valuemin="0" aria-valuemax="100">
|
60
|
+
<div class="progress-percentage">
|
61
|
+
<%= container["pct_complete"].to_i %>%
|
118
62
|
</div>
|
119
|
-
|
63
|
+
</div>
|
120
64
|
</div>
|
121
65
|
</td>
|
122
|
-
<td
|
123
|
-
<%
|
124
|
-
<%= ChronicDuration.output(container["elapsed"].to_i, :weeks => true, :units => 2) %>
|
66
|
+
<td class='center nowrap'>
|
67
|
+
<% unless container["elapsed"].nil? %>
|
68
|
+
<%= ChronicDuration.output(container["elapsed"].to_i, :weeks => true, :units => 2) || '0 secs' %>
|
125
69
|
<% end %>
|
126
70
|
</td>
|
127
|
-
<td
|
71
|
+
<td class='center nowrap'>
|
128
72
|
<% if container["eta"] %>
|
129
73
|
<%= ChronicDuration.output(container["eta"].to_i, :weeks => true, :units => 2) %>
|
130
74
|
<% end %>
|
@@ -148,7 +92,7 @@ function setPerPage(select){
|
|
148
92
|
<% end %>
|
149
93
|
<% if @statuses.empty? %>
|
150
94
|
<tr>
|
151
|
-
<td colspan="
|
95
|
+
<td colspan="8"></td>
|
152
96
|
</tr>
|
153
97
|
<% end %>
|
154
98
|
</table>
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-status
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evgeniy Tsvigun
|
8
8
|
- Kenaniah Cerny
|
9
|
-
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: sidekiq
|
@@ -17,20 +16,20 @@ dependencies:
|
|
17
16
|
requirements:
|
18
17
|
- - ">="
|
19
18
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
19
|
+
version: '7'
|
21
20
|
- - "<"
|
22
21
|
- !ruby/object:Gem::Version
|
23
|
-
version: '
|
22
|
+
version: '9'
|
24
23
|
type: :runtime
|
25
24
|
prerelease: false
|
26
25
|
version_requirements: !ruby/object:Gem::Requirement
|
27
26
|
requirements:
|
28
27
|
- - ">="
|
29
28
|
- !ruby/object:Gem::Version
|
30
|
-
version: '
|
29
|
+
version: '7'
|
31
30
|
- - "<"
|
32
31
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
32
|
+
version: '9'
|
34
33
|
- !ruby/object:Gem::Dependency
|
35
34
|
name: chronic_duration
|
36
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,6 +44,34 @@ dependencies:
|
|
45
44
|
- - ">="
|
46
45
|
- !ruby/object:Gem::Version
|
47
46
|
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: logger
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: base64
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
48
75
|
- !ruby/object:Gem::Dependency
|
49
76
|
name: appraisal
|
50
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,6 +100,20 @@ dependencies:
|
|
73
100
|
- - ">="
|
74
101
|
- !ruby/object:Gem::Version
|
75
102
|
version: '0'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: irb
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
76
117
|
- !ruby/object:Gem::Dependency
|
77
118
|
name: rack-test
|
78
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,7 +170,34 @@ dependencies:
|
|
129
170
|
- - ">="
|
130
171
|
- !ruby/object:Gem::Version
|
131
172
|
version: '0'
|
132
|
-
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: webrick
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
type: :development
|
181
|
+
prerelease: false
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - ">="
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '0'
|
187
|
+
- !ruby/object:Gem::Dependency
|
188
|
+
name: rack-session
|
189
|
+
requirement: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - ">="
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: '0'
|
194
|
+
type: :development
|
195
|
+
prerelease: false
|
196
|
+
version_requirements: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - ">="
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: '0'
|
133
201
|
email:
|
134
202
|
- utgarda@gmail.com
|
135
203
|
- kenaniah@gmail.com
|
@@ -137,21 +205,30 @@ executables: []
|
|
137
205
|
extensions: []
|
138
206
|
extra_rdoc_files: []
|
139
207
|
files:
|
208
|
+
- ".devcontainer/Dockerfile"
|
209
|
+
- ".devcontainer/README.md"
|
210
|
+
- ".devcontainer/devcontainer.json"
|
211
|
+
- ".devcontainer/docker-compose.yml"
|
140
212
|
- ".github/workflows/ci.yaml"
|
141
213
|
- ".gitignore"
|
142
214
|
- ".gitlab-ci.yml"
|
143
215
|
- ".rspec"
|
144
216
|
- Appraisals
|
145
217
|
- CHANGELOG.md
|
218
|
+
- Dockerfile
|
146
219
|
- Gemfile
|
147
220
|
- LICENSE
|
148
221
|
- README.md
|
149
222
|
- Rakefile
|
150
|
-
-
|
151
|
-
- gemfiles/
|
223
|
+
- docker-compose.yml
|
224
|
+
- gemfiles/sidekiq_7.0.gemfile
|
225
|
+
- gemfiles/sidekiq_7.3.gemfile
|
152
226
|
- gemfiles/sidekiq_7.x.gemfile
|
227
|
+
- gemfiles/sidekiq_8.0.gemfile
|
228
|
+
- gemfiles/sidekiq_8.x.gemfile
|
153
229
|
- lib/sidekiq-status.rb
|
154
230
|
- lib/sidekiq-status/client_middleware.rb
|
231
|
+
- lib/sidekiq-status/helpers.rb
|
155
232
|
- lib/sidekiq-status/redis_adapter.rb
|
156
233
|
- lib/sidekiq-status/redis_client_adapter.rb
|
157
234
|
- lib/sidekiq-status/server_middleware.rb
|
@@ -171,6 +248,9 @@ files:
|
|
171
248
|
- spec/lib/sidekiq-status_spec.rb
|
172
249
|
- spec/spec_helper.rb
|
173
250
|
- spec/support/test_jobs.rb
|
251
|
+
- spec/test_environment.rb
|
252
|
+
- web/assets/statuses.css
|
253
|
+
- web/assets/statuses.js
|
174
254
|
- web/sidekiq-status-single-web.png
|
175
255
|
- web/sidekiq-status-web.png
|
176
256
|
- web/views/status.erb
|
@@ -180,7 +260,6 @@ homepage: https://github.com/kenaniah/sidekiq-status
|
|
180
260
|
licenses:
|
181
261
|
- MIT
|
182
262
|
metadata: {}
|
183
|
-
post_install_message:
|
184
263
|
rdoc_options: []
|
185
264
|
require_paths:
|
186
265
|
- lib
|
@@ -188,15 +267,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
188
267
|
requirements:
|
189
268
|
- - ">="
|
190
269
|
- !ruby/object:Gem::Version
|
191
|
-
version: '
|
270
|
+
version: '3.2'
|
192
271
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
193
272
|
requirements:
|
194
273
|
- - ">="
|
195
274
|
- !ruby/object:Gem::Version
|
196
275
|
version: '0'
|
197
276
|
requirements: []
|
198
|
-
rubygems_version: 3.
|
199
|
-
signing_key:
|
277
|
+
rubygems_version: 3.6.9
|
200
278
|
specification_version: 4
|
201
279
|
summary: An extension to the sidekiq message processing to track your jobs
|
202
280
|
test_files:
|
@@ -209,3 +287,4 @@ test_files:
|
|
209
287
|
- spec/lib/sidekiq-status_spec.rb
|
210
288
|
- spec/spec_helper.rb
|
211
289
|
- spec/support/test_jobs.rb
|
290
|
+
- spec/test_environment.rb
|