sidekiq 8.1.1 → 8.1.6
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/Changes.md +49 -2
- data/README.md +1 -1
- data/bin/kiq +17 -0
- data/lib/active_job/queue_adapters/sidekiq_adapter.rb +8 -8
- data/lib/sidekiq/api.rb +110 -35
- data/lib/sidekiq/capsule.rb +0 -1
- data/lib/sidekiq/cli.rb +2 -3
- data/lib/sidekiq/client.rb +8 -1
- data/lib/sidekiq/component.rb +3 -0
- data/lib/sidekiq/config.rb +4 -8
- data/lib/sidekiq/job.rb +14 -1
- data/lib/sidekiq/job_retry.rb +1 -1
- data/lib/sidekiq/launcher.rb +1 -1
- data/lib/sidekiq/manager.rb +2 -1
- data/lib/sidekiq/paginator.rb +8 -2
- data/lib/sidekiq/profiler.rb +1 -1
- data/lib/sidekiq/redis_client_adapter.rb +6 -2
- data/lib/sidekiq/scheduled.rb +2 -5
- data/lib/sidekiq/testing.rb +1 -0
- data/lib/sidekiq/tui/controls.rb +53 -0
- data/lib/sidekiq/tui/filtering.rb +53 -0
- data/lib/sidekiq/tui/tabs/base_tab.rb +204 -0
- data/lib/sidekiq/tui/tabs/busy.rb +118 -0
- data/lib/sidekiq/tui/tabs/dead.rb +19 -0
- data/lib/sidekiq/tui/tabs/home.rb +144 -0
- data/lib/sidekiq/tui/tabs/metrics.rb +131 -0
- data/lib/sidekiq/tui/tabs/queues.rb +95 -0
- data/lib/sidekiq/tui/tabs/retries.rb +19 -0
- data/lib/sidekiq/tui/tabs/scheduled.rb +19 -0
- data/lib/sidekiq/tui/tabs/set_tab.rb +96 -0
- data/lib/sidekiq/tui/tabs.rb +15 -0
- data/lib/sidekiq/tui.rb +276 -913
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/action.rb +2 -2
- data/lib/sidekiq/web/application.rb +14 -1
- data/lib/sidekiq/web/helpers.rb +34 -9
- data/lib/sidekiq/web/router.rb +2 -2
- data/lib/sidekiq.rb +1 -1
- data/sidekiq.gemspec +2 -2
- data/web/assets/stylesheets/style.css +2 -0
- data/web/locales/ar.yml +1 -1
- data/web/locales/fa.yml +1 -1
- data/web/locales/gd.yml +12 -2
- data/web/locales/he.yml +1 -1
- data/web/locales/pt-BR.yml +1 -1
- data/web/locales/ur.yml +1 -1
- data/web/locales/zh-TW.yml +1 -1
- data/web/views/_job_info.html.erb +8 -0
- data/web/views/_paging.html.erb +1 -1
- data/web/views/busy.html.erb +49 -40
- data/web/views/retries.html.erb +3 -0
- metadata +17 -4
- data/bin/tui +0 -5
data/lib/sidekiq/version.rb
CHANGED
data/lib/sidekiq/web/action.rb
CHANGED
|
@@ -24,8 +24,8 @@ module Sidekiq
|
|
|
24
24
|
@request ||= ::Rack::Request.new(env)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
def halt(res)
|
|
28
|
-
throw :halt, [res, {"content-type" => "text/plain"}, [res.to_s]]
|
|
27
|
+
def halt(res, msg = nil)
|
|
28
|
+
throw :halt, [res, {"content-type" => "text/plain"}, [msg || res.to_s]]
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
# external redirect
|
|
@@ -90,7 +90,18 @@ module Sidekiq
|
|
|
90
90
|
|
|
91
91
|
get "/busy" do
|
|
92
92
|
@count = (url_params("count") || 100).to_i
|
|
93
|
-
|
|
93
|
+
|
|
94
|
+
# Use /busy?only=(jobs|processes) to limit page data
|
|
95
|
+
only = url_params("only")
|
|
96
|
+
halt 401, "Invalid value for only" unless only.nil? || only == "jobs" || only == "processes"
|
|
97
|
+
|
|
98
|
+
@show_jobs = (only != "processes")
|
|
99
|
+
@show_processes = (only != "jobs")
|
|
100
|
+
|
|
101
|
+
if @show_jobs
|
|
102
|
+
(@current_page, @total_size, @workset) = page_items(workset, url_params("page"), @count)
|
|
103
|
+
@iterable_states = Sidekiq::IterableJobQuery.new(workset.map { |_, _, work| work.job.jid })
|
|
104
|
+
end
|
|
94
105
|
|
|
95
106
|
erb(:busy)
|
|
96
107
|
end
|
|
@@ -226,6 +237,8 @@ module Sidekiq
|
|
|
226
237
|
@retries = @retries.map { |msg, score| Sidekiq::SortedEntry.new(nil, score, msg) }
|
|
227
238
|
end
|
|
228
239
|
|
|
240
|
+
@iterable_states = Sidekiq::IterableJobQuery.new(@retries.map(&:jid))
|
|
241
|
+
|
|
229
242
|
erb(:retries)
|
|
230
243
|
end
|
|
231
244
|
|
data/lib/sidekiq/web/helpers.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "uri"
|
|
4
|
-
require "yaml"
|
|
5
4
|
require "cgi/escape"
|
|
6
5
|
|
|
7
6
|
module Sidekiq
|
|
@@ -73,12 +72,37 @@ module Sidekiq
|
|
|
73
72
|
# so extensions can be localized
|
|
74
73
|
@@strings[lang] ||= config.locales.each_with_object({}) do |path, global|
|
|
75
74
|
find_locale_files(lang).each do |file|
|
|
76
|
-
strs =
|
|
75
|
+
strs = parse_yaml(file)
|
|
77
76
|
global.merge!(strs[lang])
|
|
78
77
|
end
|
|
79
78
|
end
|
|
80
79
|
end
|
|
81
80
|
|
|
81
|
+
def parse_yaml(path)
|
|
82
|
+
locale = nil
|
|
83
|
+
map = {}
|
|
84
|
+
IO.readlines(path, chomp: true).each do |line|
|
|
85
|
+
case line
|
|
86
|
+
when /\A\s*\#.*/
|
|
87
|
+
# line comment
|
|
88
|
+
when !locale && /\A([a-zA-Z\-_]+):/
|
|
89
|
+
locale = $1
|
|
90
|
+
map[locale] = {}
|
|
91
|
+
when /\A\s+(\w+):\s+(.+)\z/
|
|
92
|
+
# A few values have double quotes to include special characters in YAML.
|
|
93
|
+
# Strip them off manually as our greedy match will include them.
|
|
94
|
+
key = $1
|
|
95
|
+
s = $2
|
|
96
|
+
s = s[1..] if s[0] == "\""
|
|
97
|
+
s = s[0..-2] if s[-1] == "\""
|
|
98
|
+
map[locale][key] = s
|
|
99
|
+
else
|
|
100
|
+
raise ArgumentError, "unable to parse #{path}: #{line}"
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
map
|
|
104
|
+
end
|
|
105
|
+
|
|
82
106
|
def to_json(x)
|
|
83
107
|
Sidekiq.dump_json(x)
|
|
84
108
|
end
|
|
@@ -126,17 +150,18 @@ module Sidekiq
|
|
|
126
150
|
erb(:filtering, locals: {which:, placeholder_key:, label_key:})
|
|
127
151
|
end
|
|
128
152
|
|
|
129
|
-
def filter_link(
|
|
153
|
+
def filter_link(str, within = "retries")
|
|
154
|
+
hstr = h(str)
|
|
130
155
|
if within.nil?
|
|
131
|
-
|
|
156
|
+
hstr
|
|
132
157
|
else
|
|
133
|
-
"<a href='#{root_path}#{within}?substr=#{
|
|
158
|
+
"<a href='#{root_path}#{within}?substr=#{hstr}'>#{hstr}</a>"
|
|
134
159
|
end
|
|
135
160
|
end
|
|
136
161
|
|
|
137
162
|
def display_tags(job, within = "retries")
|
|
138
163
|
job.tags.map { |tag|
|
|
139
|
-
"<span class='label label-info jobtag jobtag-#{
|
|
164
|
+
"<span class='label label-info jobtag jobtag-#{h(tag)}'>#{filter_link(tag, within)}</span>"
|
|
140
165
|
}.join(" ")
|
|
141
166
|
end
|
|
142
167
|
|
|
@@ -294,7 +319,7 @@ module Sidekiq
|
|
|
294
319
|
else
|
|
295
320
|
# DEPRECATED Backwards compatibility with older processes.
|
|
296
321
|
# 'capsules' element added in v8.0.9
|
|
297
|
-
|
|
322
|
+
pro.queues.join(", ")
|
|
298
323
|
end
|
|
299
324
|
end
|
|
300
325
|
|
|
@@ -307,7 +332,7 @@ module Sidekiq
|
|
|
307
332
|
[score.to_f, jid]
|
|
308
333
|
end
|
|
309
334
|
|
|
310
|
-
SAFE_QPARAMS = %w[page direction]
|
|
335
|
+
SAFE_QPARAMS = %w[page direction only]
|
|
311
336
|
|
|
312
337
|
# Merge options with current params, filter safe params, and stringify to query string
|
|
313
338
|
def qparams(options)
|
|
@@ -390,7 +415,7 @@ module Sidekiq
|
|
|
390
415
|
end
|
|
391
416
|
|
|
392
417
|
def h(text)
|
|
393
|
-
::
|
|
418
|
+
::CGI.escapeHTML(text.to_s)
|
|
394
419
|
rescue ArgumentError => e
|
|
395
420
|
raise unless e.message.eql?("invalid byte sequence in UTF-8")
|
|
396
421
|
text.encode!("UTF-16", "UTF-8", invalid: :replace, replace: "").encode!("UTF-8", "UTF-16")
|
data/lib/sidekiq/web/router.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "
|
|
3
|
+
require "uri"
|
|
4
4
|
|
|
5
5
|
module Sidekiq
|
|
6
6
|
class Web
|
|
@@ -28,7 +28,7 @@ module Sidekiq
|
|
|
28
28
|
|
|
29
29
|
def match(env)
|
|
30
30
|
request_method = env["REQUEST_METHOD"].downcase.to_sym
|
|
31
|
-
path_info = ::
|
|
31
|
+
path_info = ::URI::RFC2396_PARSER.unescape env["PATH_INFO"]
|
|
32
32
|
|
|
33
33
|
# There are servers which send an empty string when requesting the root.
|
|
34
34
|
# These servers should be ashamed of themselves.
|
data/lib/sidekiq.rb
CHANGED
|
@@ -48,7 +48,7 @@ module Sidekiq
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
def self.testing!(mode = :fake, &block)
|
|
51
|
-
raise "Unknown testing mode: #{mode}" unless %i[fake
|
|
51
|
+
raise "Unknown testing mode: #{mode}" unless %i[fake disable inline].include?(mode)
|
|
52
52
|
|
|
53
53
|
require "sidekiq/test_api"
|
|
54
54
|
Sidekiq::Testing.__set_test_mode(mode, &block)
|
data/sidekiq.gemspec
CHANGED
|
@@ -8,7 +8,7 @@ Gem::Specification.new do |gem|
|
|
|
8
8
|
gem.homepage = "https://sidekiq.org"
|
|
9
9
|
gem.license = "LGPL-3.0"
|
|
10
10
|
|
|
11
|
-
gem.executables = ["sidekiq", "sidekiqmon"]
|
|
11
|
+
gem.executables = ["sidekiq", "sidekiqmon", "kiq"]
|
|
12
12
|
gem.files = %w[sidekiq.gemspec README.md Changes.md LICENSE.txt] + `git ls-files | grep -E '^(bin|lib|web)'`.split("\n")
|
|
13
13
|
gem.name = "sidekiq"
|
|
14
14
|
gem.version = Sidekiq::VERSION
|
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |gem|
|
|
|
23
23
|
"rubygems_mfa_required" => "true"
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
gem.add_dependency "redis-client", ">= 0.
|
|
26
|
+
gem.add_dependency "redis-client", ">= 0.29.0"
|
|
27
27
|
gem.add_dependency "connection_pool", ">= 3.0.0"
|
|
28
28
|
gem.add_dependency "rack", ">= 3.2.0"
|
|
29
29
|
gem.add_dependency "json", ">= 2.16.0"
|
|
@@ -534,6 +534,8 @@ input[type="checkbox"] { accent-color: var(--color-primary); }
|
|
|
534
534
|
|
|
535
535
|
.pagination a { text-decoration: none; }
|
|
536
536
|
|
|
537
|
+
.pagination .active a { color: var(--color-primary); font-weight: 700; }
|
|
538
|
+
|
|
537
539
|
.pagination .disabled { opacity: 0.3; }
|
|
538
540
|
|
|
539
541
|
div:has(.pagination.pull-right) { margin-left: auto; }
|
data/web/locales/ar.yml
CHANGED
data/web/locales/fa.yml
CHANGED
data/web/locales/gd.yml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# elements like %{queue} are variables and should not be translated
|
|
2
2
|
gd:
|
|
3
|
-
LanguageName:
|
|
3
|
+
LanguageName: Gàidhlig
|
|
4
4
|
Actions: Gnìomhan
|
|
5
5
|
AddToQueue: Cuir ris a’ chiutha
|
|
6
6
|
AddAllToQueue: Cuir a h-uile ris a’ chiutha
|
|
@@ -36,6 +36,8 @@ gd:
|
|
|
36
36
|
Jobs: Obraichean
|
|
37
37
|
Kill: Marbh
|
|
38
38
|
KillAll: Marbh na h-uile
|
|
39
|
+
Language: Cànan
|
|
40
|
+
LastDashboardUpdateTemplateLiteral: "An t-ath-nuadhachadh mu dheireadh: Air pròiseasadh: PROCESSED_COUNT. Air fàilligeadh: FAILED_COUNT."
|
|
39
41
|
LastRetry: An oidhirp mu dheireadh
|
|
40
42
|
Latency: Foillidheachd
|
|
41
43
|
LivePoll: Ath-nuadhachadh beò
|
|
@@ -55,6 +57,7 @@ gd:
|
|
|
55
57
|
PeakMemoryUsage: Bàrr cleachdadh a’ chuimhne
|
|
56
58
|
Plugins: Plugain
|
|
57
59
|
PollingInterval: Eadaramh an ath-nuadhachaidh
|
|
60
|
+
PollingIntervalMilliseconds: Milidiogan eadaramh an ath-nuadhachaidh
|
|
58
61
|
Process: Pròiseas
|
|
59
62
|
Processed: Air pròiseasadh
|
|
60
63
|
Processes: Pròiseasan
|
|
@@ -98,3 +101,10 @@ gd:
|
|
|
98
101
|
AvgExecutionTime: Ùine cuibheasach nan gnìomhan
|
|
99
102
|
Context: Co-theacsa
|
|
100
103
|
NoJobMetricsFound: Cha deach meatraigeachd o chionn goirid air obair a lorg
|
|
104
|
+
Filter: Criathraich
|
|
105
|
+
AnyJobContent: Susbaint obrach sam bith
|
|
106
|
+
Profiles: Pròifilean
|
|
107
|
+
Data: Dàta
|
|
108
|
+
View: Seall
|
|
109
|
+
Token: Tòcan
|
|
110
|
+
ElapsedTime: An ùine a chaidh seachad
|
data/web/locales/he.yml
CHANGED
data/web/locales/pt-BR.yml
CHANGED
data/web/locales/ur.yml
CHANGED
data/web/locales/zh-TW.yml
CHANGED
|
@@ -34,6 +34,14 @@
|
|
|
34
34
|
<code><%= job.jid %></code>
|
|
35
35
|
</td>
|
|
36
36
|
</tr>
|
|
37
|
+
<% if (state = job.iterable_state) %>
|
|
38
|
+
<tr>
|
|
39
|
+
<th>Iteration</th>
|
|
40
|
+
<td>
|
|
41
|
+
<code>cursor=<%= h(state.cursor.inspect) %>; exec=<%= state.executions %>; rt=<%= number_with_delimiter(state.runtime, precision: 3) %>s</code>
|
|
42
|
+
</td>
|
|
43
|
+
</tr>
|
|
44
|
+
<% end %>
|
|
37
45
|
<% if job.bid %>
|
|
38
46
|
<tr>
|
|
39
47
|
<th>BID</th>
|
data/web/views/_paging.html.erb
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<a href="<%= url %>?<%= qparams(page: @current_page - 1) %>"><%= @current_page - 1 %></a>
|
|
11
11
|
</li>
|
|
12
12
|
<% end %>
|
|
13
|
-
<li class="
|
|
13
|
+
<li class="active">
|
|
14
14
|
<a href="<%= url %>?<%= qparams(page: @current_page) %>"><%= @current_page %></a>
|
|
15
15
|
</li>
|
|
16
16
|
<% if @total_size > @current_page * @count %>
|
data/web/views/busy.html.erb
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
</div>
|
|
28
28
|
</section>
|
|
29
29
|
|
|
30
|
+
<% if @show_processes %>
|
|
30
31
|
<section>
|
|
31
32
|
<header>
|
|
32
33
|
<h2><%= t('Processes') %></h2>
|
|
@@ -102,45 +103,53 @@
|
|
|
102
103
|
</table>
|
|
103
104
|
</div>
|
|
104
105
|
</section>
|
|
106
|
+
<% end %>
|
|
105
107
|
|
|
106
|
-
|
|
107
|
-
<
|
|
108
|
-
<
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
</header>
|
|
113
|
-
|
|
114
|
-
<div class="table_container">
|
|
115
|
-
<table>
|
|
116
|
-
<thead>
|
|
117
|
-
<th><%= t('Process') %></th>
|
|
118
|
-
<th><%= t('TID') %></th>
|
|
119
|
-
<th><%= t('JID') %></th>
|
|
120
|
-
<th><%= t('Queue') %></th>
|
|
121
|
-
<th><%= t('Job') %></th>
|
|
122
|
-
<th><%= t('Arguments') %></th>
|
|
123
|
-
<th><%= t('Started') %></th>
|
|
124
|
-
</thead>
|
|
125
|
-
<% @workset.each do |process, thread, work| %>
|
|
126
|
-
<% job = work.job %>
|
|
127
|
-
<tr>
|
|
128
|
-
<td><%= process %></td>
|
|
129
|
-
<td><%= thread %></td>
|
|
130
|
-
<td><%= job.jid %></td>
|
|
131
|
-
<td>
|
|
132
|
-
<a href="<%= root_path %>queues/<%= work.queue %>"><%= work.queue %></a>
|
|
133
|
-
</td>
|
|
134
|
-
<td>
|
|
135
|
-
<%= job.display_class %>
|
|
136
|
-
<%= display_tags(job, nil) %>
|
|
137
|
-
</td>
|
|
138
|
-
<td>
|
|
139
|
-
<code><div class="args"><%= display_args(job.display_args) %></div></code>
|
|
140
|
-
</td>
|
|
141
|
-
<td><%= relative_time(work.run_at) %></td>
|
|
142
|
-
</tr>
|
|
108
|
+
<% if @show_jobs %>
|
|
109
|
+
<section>
|
|
110
|
+
<header>
|
|
111
|
+
<h2><%= t('Jobs') %></h2>
|
|
112
|
+
<% if @workset.size > 0 && @total_size > @count %>
|
|
113
|
+
<%= erb :_paging, locals: { url: "#{root_path}busy" } %>
|
|
143
114
|
<% end %>
|
|
144
|
-
</
|
|
145
|
-
|
|
146
|
-
|
|
115
|
+
</header>
|
|
116
|
+
|
|
117
|
+
<div class="table_container">
|
|
118
|
+
<table>
|
|
119
|
+
<thead>
|
|
120
|
+
<th><%= t('Process') %></th>
|
|
121
|
+
<th><%= t('TID') %></th>
|
|
122
|
+
<th><%= t('JID') %></th>
|
|
123
|
+
<th><%= t('Queue') %></th>
|
|
124
|
+
<th><%= t('Job') %></th>
|
|
125
|
+
<th><%= t('Arguments') %></th>
|
|
126
|
+
<th><%= t('Started') %></th>
|
|
127
|
+
</thead>
|
|
128
|
+
<% @workset.each do |process, thread, work| %>
|
|
129
|
+
<% job = work.job %>
|
|
130
|
+
<tr>
|
|
131
|
+
<td><%= process %></td>
|
|
132
|
+
<td><%= thread %></td>
|
|
133
|
+
<td><%= job.jid %></td>
|
|
134
|
+
<td>
|
|
135
|
+
<a href="<%= root_path %>queues/<%= work.queue %>"><%= work.queue %></a>
|
|
136
|
+
</td>
|
|
137
|
+
<td>
|
|
138
|
+
<%= job.display_class %>
|
|
139
|
+
<%= display_tags(job, nil) %>
|
|
140
|
+
</td>
|
|
141
|
+
<td>
|
|
142
|
+
<code><div class="args"><%= display_args(job.display_args) %></div></code>
|
|
143
|
+
</td>
|
|
144
|
+
<td>
|
|
145
|
+
<%= relative_time(work.run_at) %>
|
|
146
|
+
<% if (state = @iterable_states[job.jid]) %>
|
|
147
|
+
<div><small>cursor=<%= h(truncate(state.cursor.inspect, 100)) %>; exec=<%= state.executions %>; rt=<%= number_with_delimiter(state.runtime, precision: 3) %>s</small></div>
|
|
148
|
+
<% end %>
|
|
149
|
+
</td>
|
|
150
|
+
</tr>
|
|
151
|
+
<% end %>
|
|
152
|
+
</table>
|
|
153
|
+
</div>
|
|
154
|
+
</section>
|
|
155
|
+
<% end %>
|
data/web/views/retries.html.erb
CHANGED
|
@@ -52,6 +52,9 @@
|
|
|
52
52
|
</td>
|
|
53
53
|
<td>
|
|
54
54
|
<div><a href="<%= root_path %>retries/<%= job_params(entry.item, entry.score) %>"><%= h truncate("#{entry['error_class']}: #{entry['error_message']}", 200) %></a></div>
|
|
55
|
+
<% if (state = @iterable_states[entry.jid]) %>
|
|
56
|
+
<div><small>cursor=<%= h(truncate(state.cursor.inspect, 100)) %>; exec=<%= state.executions %>; rt=<%= number_with_delimiter(state.runtime, precision: 3) %>s</small></div>
|
|
57
|
+
<% end %>
|
|
55
58
|
</td>
|
|
56
59
|
</tr>
|
|
57
60
|
<% end %>
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sidekiq
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 8.1.
|
|
4
|
+
version: 8.1.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mike Perham
|
|
@@ -15,14 +15,14 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 0.
|
|
18
|
+
version: 0.29.0
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - ">="
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 0.
|
|
25
|
+
version: 0.29.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: connection_pool
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -83,6 +83,7 @@ description: Simple, efficient background processing for Ruby.
|
|
|
83
83
|
email:
|
|
84
84
|
- info@contribsys.com
|
|
85
85
|
executables:
|
|
86
|
+
- kiq
|
|
86
87
|
- sidekiq
|
|
87
88
|
- sidekiqmon
|
|
88
89
|
extensions: []
|
|
@@ -91,12 +92,12 @@ files:
|
|
|
91
92
|
- Changes.md
|
|
92
93
|
- LICENSE.txt
|
|
93
94
|
- README.md
|
|
95
|
+
- bin/kiq
|
|
94
96
|
- bin/lint-herb
|
|
95
97
|
- bin/multi_queue_bench
|
|
96
98
|
- bin/sidekiq
|
|
97
99
|
- bin/sidekiqload
|
|
98
100
|
- bin/sidekiqmon
|
|
99
|
-
- bin/tui
|
|
100
101
|
- bin/webload
|
|
101
102
|
- lib/active_job/queue_adapters/sidekiq_adapter.rb
|
|
102
103
|
- lib/generators/sidekiq/job_generator.rb
|
|
@@ -150,6 +151,18 @@ files:
|
|
|
150
151
|
- lib/sidekiq/testing/inline.rb
|
|
151
152
|
- lib/sidekiq/transaction_aware_client.rb
|
|
152
153
|
- lib/sidekiq/tui.rb
|
|
154
|
+
- lib/sidekiq/tui/controls.rb
|
|
155
|
+
- lib/sidekiq/tui/filtering.rb
|
|
156
|
+
- lib/sidekiq/tui/tabs.rb
|
|
157
|
+
- lib/sidekiq/tui/tabs/base_tab.rb
|
|
158
|
+
- lib/sidekiq/tui/tabs/busy.rb
|
|
159
|
+
- lib/sidekiq/tui/tabs/dead.rb
|
|
160
|
+
- lib/sidekiq/tui/tabs/home.rb
|
|
161
|
+
- lib/sidekiq/tui/tabs/metrics.rb
|
|
162
|
+
- lib/sidekiq/tui/tabs/queues.rb
|
|
163
|
+
- lib/sidekiq/tui/tabs/retries.rb
|
|
164
|
+
- lib/sidekiq/tui/tabs/scheduled.rb
|
|
165
|
+
- lib/sidekiq/tui/tabs/set_tab.rb
|
|
153
166
|
- lib/sidekiq/version.rb
|
|
154
167
|
- lib/sidekiq/web.rb
|
|
155
168
|
- lib/sidekiq/web/action.rb
|