sidekiq 5.2.8
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sidekiq might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/.circleci/config.yml +61 -0
- data/.github/contributing.md +32 -0
- data/.github/issue_template.md +11 -0
- data/.gitignore +15 -0
- data/.travis.yml +11 -0
- data/3.0-Upgrade.md +70 -0
- data/4.0-Upgrade.md +53 -0
- data/5.0-Upgrade.md +56 -0
- data/COMM-LICENSE +97 -0
- data/Changes.md +1542 -0
- data/Ent-Changes.md +238 -0
- data/Gemfile +23 -0
- data/LICENSE +9 -0
- data/Pro-2.0-Upgrade.md +138 -0
- data/Pro-3.0-Upgrade.md +44 -0
- data/Pro-4.0-Upgrade.md +35 -0
- data/Pro-Changes.md +759 -0
- data/README.md +109 -0
- data/Rakefile +9 -0
- data/bin/sidekiq +18 -0
- data/bin/sidekiqctl +20 -0
- data/bin/sidekiqload +149 -0
- data/code_of_conduct.md +50 -0
- data/lib/generators/sidekiq/templates/worker.rb.erb +9 -0
- data/lib/generators/sidekiq/templates/worker_spec.rb.erb +6 -0
- data/lib/generators/sidekiq/templates/worker_test.rb.erb +8 -0
- data/lib/generators/sidekiq/worker_generator.rb +49 -0
- data/lib/sidekiq.rb +237 -0
- data/lib/sidekiq/api.rb +940 -0
- data/lib/sidekiq/cli.rb +445 -0
- data/lib/sidekiq/client.rb +243 -0
- data/lib/sidekiq/core_ext.rb +1 -0
- data/lib/sidekiq/ctl.rb +221 -0
- data/lib/sidekiq/delay.rb +42 -0
- data/lib/sidekiq/exception_handler.rb +29 -0
- data/lib/sidekiq/extensions/action_mailer.rb +57 -0
- data/lib/sidekiq/extensions/active_record.rb +40 -0
- data/lib/sidekiq/extensions/class_methods.rb +40 -0
- data/lib/sidekiq/extensions/generic_proxy.rb +31 -0
- data/lib/sidekiq/fetch.rb +81 -0
- data/lib/sidekiq/job_logger.rb +25 -0
- data/lib/sidekiq/job_retry.rb +262 -0
- data/lib/sidekiq/launcher.rb +173 -0
- data/lib/sidekiq/logging.rb +122 -0
- data/lib/sidekiq/manager.rb +137 -0
- data/lib/sidekiq/middleware/chain.rb +150 -0
- data/lib/sidekiq/middleware/i18n.rb +42 -0
- data/lib/sidekiq/middleware/server/active_record.rb +23 -0
- data/lib/sidekiq/paginator.rb +43 -0
- data/lib/sidekiq/processor.rb +279 -0
- data/lib/sidekiq/rails.rb +58 -0
- data/lib/sidekiq/redis_connection.rb +144 -0
- data/lib/sidekiq/scheduled.rb +174 -0
- data/lib/sidekiq/testing.rb +333 -0
- data/lib/sidekiq/testing/inline.rb +29 -0
- data/lib/sidekiq/util.rb +66 -0
- data/lib/sidekiq/version.rb +4 -0
- data/lib/sidekiq/web.rb +213 -0
- data/lib/sidekiq/web/action.rb +89 -0
- data/lib/sidekiq/web/application.rb +353 -0
- data/lib/sidekiq/web/helpers.rb +325 -0
- data/lib/sidekiq/web/router.rb +100 -0
- data/lib/sidekiq/worker.rb +220 -0
- data/sidekiq.gemspec +21 -0
- data/web/assets/images/favicon.ico +0 -0
- data/web/assets/images/logo.png +0 -0
- data/web/assets/images/status.png +0 -0
- data/web/assets/javascripts/application.js +92 -0
- data/web/assets/javascripts/dashboard.js +315 -0
- data/web/assets/stylesheets/application-rtl.css +246 -0
- data/web/assets/stylesheets/application.css +1144 -0
- data/web/assets/stylesheets/bootstrap-rtl.min.css +9 -0
- data/web/assets/stylesheets/bootstrap.css +5 -0
- data/web/locales/ar.yml +81 -0
- data/web/locales/cs.yml +78 -0
- data/web/locales/da.yml +68 -0
- data/web/locales/de.yml +69 -0
- data/web/locales/el.yml +68 -0
- data/web/locales/en.yml +81 -0
- data/web/locales/es.yml +70 -0
- data/web/locales/fa.yml +80 -0
- data/web/locales/fr.yml +78 -0
- data/web/locales/he.yml +79 -0
- data/web/locales/hi.yml +75 -0
- data/web/locales/it.yml +69 -0
- data/web/locales/ja.yml +80 -0
- data/web/locales/ko.yml +68 -0
- data/web/locales/nb.yml +77 -0
- data/web/locales/nl.yml +68 -0
- data/web/locales/pl.yml +59 -0
- data/web/locales/pt-br.yml +68 -0
- data/web/locales/pt.yml +67 -0
- data/web/locales/ru.yml +78 -0
- data/web/locales/sv.yml +68 -0
- data/web/locales/ta.yml +75 -0
- data/web/locales/uk.yml +76 -0
- data/web/locales/ur.yml +80 -0
- data/web/locales/zh-cn.yml +68 -0
- data/web/locales/zh-tw.yml +68 -0
- data/web/views/_footer.erb +20 -0
- data/web/views/_job_info.erb +88 -0
- data/web/views/_nav.erb +52 -0
- data/web/views/_paging.erb +23 -0
- data/web/views/_poll_link.erb +7 -0
- data/web/views/_status.erb +4 -0
- data/web/views/_summary.erb +40 -0
- data/web/views/busy.erb +98 -0
- data/web/views/dashboard.erb +75 -0
- data/web/views/dead.erb +34 -0
- data/web/views/layout.erb +40 -0
- data/web/views/morgue.erb +75 -0
- data/web/views/queue.erb +46 -0
- data/web/views/queues.erb +30 -0
- data/web/views/retries.erb +80 -0
- data/web/views/retry.erb +34 -0
- data/web/views/scheduled.erb +54 -0
- data/web/views/scheduled_job_info.erb +8 -0
- metadata +230 -0
data/web/views/dead.erb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
<%= erb :_job_info, locals: { job: @dead, type: :dead } %>
|
2
|
+
|
3
|
+
<h3><%= t('Error') %></h3>
|
4
|
+
<div class="table_container">
|
5
|
+
<table class="error table table-bordered table-striped">
|
6
|
+
<tbody>
|
7
|
+
<tr>
|
8
|
+
<th><%= t('ErrorClass') %></th>
|
9
|
+
<td>
|
10
|
+
<code><%= @dead['error_class'] %></code>
|
11
|
+
</td>
|
12
|
+
</tr>
|
13
|
+
<tr>
|
14
|
+
<th><%= t('ErrorMessage') %></th>
|
15
|
+
<td><%= h(@dead['error_message']) %></td>
|
16
|
+
</tr>
|
17
|
+
<% if !@dead['error_backtrace'].nil? %>
|
18
|
+
<tr>
|
19
|
+
<th><%= t('ErrorBacktrace') %></th>
|
20
|
+
<td>
|
21
|
+
<code><%= @dead['error_backtrace'].join("<br/>") %></code>
|
22
|
+
</td>
|
23
|
+
</tr>
|
24
|
+
<% end %>
|
25
|
+
</tbody>
|
26
|
+
</table>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<form class="form-horizontal" action="<%= root_path %>morgue/<%= job_params(@dead, @dead.score) %>" method="post">
|
30
|
+
<%= csrf_tag %>
|
31
|
+
<a class="btn btn-default" href="<%= root_path %>morgue"><%= t('GoBack') %></a>
|
32
|
+
<input class="btn btn-primary" type="submit" name="retry" value="<%= t('RetryNow') %>" />
|
33
|
+
<input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>" />
|
34
|
+
</form>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html dir="<%= text_direction %>">
|
3
|
+
<head>
|
4
|
+
<title><%= environment_title_prefix %><%= Sidekiq::NAME %></title>
|
5
|
+
<meta charset="utf-8" />
|
6
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
7
|
+
|
8
|
+
<link href="<%= root_path %>stylesheets/bootstrap.css" media="screen" rel="stylesheet" type="text/css" />
|
9
|
+
<% if rtl? %>
|
10
|
+
<link href="<%= root_path %>stylesheets/bootstrap-rtl.min.css" media="screen" rel="stylesheet" type="text/css"/>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<link href="<%= root_path %>stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
|
14
|
+
<% if rtl? %>
|
15
|
+
<link href="<%= root_path %>stylesheets/application-rtl.css" media="screen" rel="stylesheet" type="text/css" />
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<link rel="shortcut icon" type="image/ico" href="<%= root_path %>images/favicon.ico" />
|
19
|
+
<script type="text/javascript" src="<%= root_path %>javascripts/application.js"></script>
|
20
|
+
<meta name="google" content="notranslate" />
|
21
|
+
<%= display_custom_head %>
|
22
|
+
</head>
|
23
|
+
<body class="admin" data-poll-path="<%= poll_path %>" data-locale="<%= locale %>">
|
24
|
+
<%= erb :_nav %>
|
25
|
+
<div id="page">
|
26
|
+
<div class="container">
|
27
|
+
<div class="row">
|
28
|
+
<div class="col-sm-12 summary_bar">
|
29
|
+
<%= erb :_summary %>
|
30
|
+
</div>
|
31
|
+
|
32
|
+
<div class="col-sm-12">
|
33
|
+
<%= yield %>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
<%= erb :_footer %>
|
39
|
+
</body>
|
40
|
+
</html>
|
@@ -0,0 +1,75 @@
|
|
1
|
+
<header class="row">
|
2
|
+
<div class="col-sm-5">
|
3
|
+
<h3><%= t('DeadJobs') %></h3>
|
4
|
+
</div>
|
5
|
+
<% if @dead.size > 0 && @total_size > @count %>
|
6
|
+
<div class="col-sm-4">
|
7
|
+
<%= erb :_paging, locals: { url: "#{root_path}morgue" } %>
|
8
|
+
</div>
|
9
|
+
<% end %>
|
10
|
+
<%= filtering('dead') %>
|
11
|
+
</header>
|
12
|
+
|
13
|
+
<% if @dead.size > 0 %>
|
14
|
+
<form action="<%= root_path %>morgue" method="post">
|
15
|
+
<%= csrf_tag %>
|
16
|
+
<div class="table_container">
|
17
|
+
<table class="table table-striped table-bordered table-white">
|
18
|
+
<thead>
|
19
|
+
<tr>
|
20
|
+
<th class="table-checkbox checkbox-column">
|
21
|
+
<label>
|
22
|
+
<input type="checkbox" class="check_all" />
|
23
|
+
</label>
|
24
|
+
</th>
|
25
|
+
<th><%= t('LastRetry') %></th>
|
26
|
+
<th><%= t('Queue') %></th>
|
27
|
+
<th><%= t('Job') %></th>
|
28
|
+
<th><%= t('Arguments') %></th>
|
29
|
+
<th><%= t('Error') %></th>
|
30
|
+
</tr>
|
31
|
+
</thead>
|
32
|
+
<% @dead.each do |entry| %>
|
33
|
+
<tr>
|
34
|
+
<td class="table-checkbox">
|
35
|
+
<label>
|
36
|
+
<input type='checkbox' name='key[]' value='<%= job_params(entry.item, entry.score) %>' />
|
37
|
+
</label>
|
38
|
+
</td>
|
39
|
+
<td>
|
40
|
+
<a href="<%= root_path %>morgue/<%= job_params(entry.item, entry.score) %>"><%= relative_time(entry.at) %></a>
|
41
|
+
</td>
|
42
|
+
<td>
|
43
|
+
<a href="<%= root_path %>queues/<%= entry.queue %>"><%= entry.queue %></a>
|
44
|
+
</td>
|
45
|
+
<td><%= entry.display_class %></td>
|
46
|
+
<td>
|
47
|
+
<div class="args"><%= display_args(entry.display_args) %></div>
|
48
|
+
</td>
|
49
|
+
<td>
|
50
|
+
<% if entry.error? %>
|
51
|
+
<div><%= h truncate("#{entry['error_class']}: #{entry['error_message']}", 200) %></div>
|
52
|
+
<% end %>
|
53
|
+
</td>
|
54
|
+
</tr>
|
55
|
+
<% end %>
|
56
|
+
</table>
|
57
|
+
</div>
|
58
|
+
<input class="btn btn-primary btn-xs pull-left flip" type="submit" name="retry" value="<%= t('RetryNow') %>" />
|
59
|
+
<input class="btn btn-danger btn-xs pull-left flip" type="submit" name="delete" value="<%= t('Delete') %>" />
|
60
|
+
</form>
|
61
|
+
|
62
|
+
<% unfiltered? do %>
|
63
|
+
<form action="<%= root_path %>morgue/all/delete" method="post">
|
64
|
+
<%= csrf_tag %>
|
65
|
+
<input class="btn btn-danger btn-xs pull-right flip" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
66
|
+
</form>
|
67
|
+
<form action="<%= root_path %>morgue/all/retry" method="post">
|
68
|
+
<%= csrf_tag %>
|
69
|
+
<input class="btn btn-danger btn-xs pull-right flip" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
70
|
+
</form>
|
71
|
+
<% end %>
|
72
|
+
|
73
|
+
<% else %>
|
74
|
+
<div class="alert alert-success"><%= t('NoDeadJobsFound') %></div>
|
75
|
+
<% end %>
|
data/web/views/queue.erb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
<header class="row">
|
2
|
+
<div class="col-sm-5">
|
3
|
+
<h3>
|
4
|
+
<%= t('CurrentMessagesInQueue', :queue => h(@name)) %>
|
5
|
+
<% if @queue.paused? %>
|
6
|
+
<span class="label label-danger"><%= t('Paused') %></span>
|
7
|
+
<% end %>
|
8
|
+
<span class="badge badge-secondary"><%= number_with_delimiter(@total_size) %></span>
|
9
|
+
</h3>
|
10
|
+
</div>
|
11
|
+
<div class="col-sm-4 pull-right flip">
|
12
|
+
<%= erb :_paging, locals: { url: "#{root_path}queues/#{CGI.escape(@name)}" } %>
|
13
|
+
</div>
|
14
|
+
</header>
|
15
|
+
<div class="table_container">
|
16
|
+
<table class="queue table table-hover table-bordered table-striped">
|
17
|
+
<thead>
|
18
|
+
<th><%= t('Job') %></th>
|
19
|
+
<th><%= t('Arguments') %></th>
|
20
|
+
<th></th>
|
21
|
+
</thead>
|
22
|
+
<% @messages.each_with_index do |msg, index| %>
|
23
|
+
<tr>
|
24
|
+
<td><%= h(msg.display_class) %></td>
|
25
|
+
<td>
|
26
|
+
<% a = msg.display_args %>
|
27
|
+
<% if a.inspect.size > 100 %>
|
28
|
+
<span class="worker_<%= index %>"><%= h(a.inspect[0..100]) + "... " %></span>
|
29
|
+
<button data-toggle="collapse" data-target=".worker_<%= index %>" class="btn btn-default btn-xs"><%= t('ShowAll') %></button>
|
30
|
+
<div class="toggle worker_<%= index %>"><%= display_args(a) %></div>
|
31
|
+
<% else %>
|
32
|
+
<%= display_args(msg.display_args) %>
|
33
|
+
<% end %>
|
34
|
+
</td>
|
35
|
+
<td>
|
36
|
+
<form action="<%= root_path %>queues/<%= CGI.escape(@name) %>/delete" method="post">
|
37
|
+
<%= csrf_tag %>
|
38
|
+
<input name="key_val" value="<%= h msg.value %>" type="hidden" />
|
39
|
+
<input class="btn btn-danger btn-xs" type="submit" name="delete" value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSure') %>" />
|
40
|
+
</form>
|
41
|
+
</td>
|
42
|
+
</tr>
|
43
|
+
<% end %>
|
44
|
+
</table>
|
45
|
+
</div>
|
46
|
+
<%= erb :_paging, locals: { url: "#{root_path}queues/#{@name}" } %>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<h3><%= t('Queues') %></h3>
|
2
|
+
|
3
|
+
<div class="table_container">
|
4
|
+
<table class="queues table table-hover table-bordered table-striped table-white">
|
5
|
+
<thead>
|
6
|
+
<th><%= t('Queue') %></th>
|
7
|
+
<th><%= t('Size') %></th>
|
8
|
+
<th><%= t('Latency') %></th>
|
9
|
+
<th><%= t('Actions') %></th>
|
10
|
+
</thead>
|
11
|
+
<% @queues.each do |queue| %>
|
12
|
+
<tr>
|
13
|
+
<td>
|
14
|
+
<a href="<%= root_path %>queues/<%= CGI.escape(queue.name) %>"><%= h queue.name %></a>
|
15
|
+
<% if queue.paused? %>
|
16
|
+
<span class="label label-danger"><%= t('Paused') %></span>
|
17
|
+
<% end %>
|
18
|
+
</td>
|
19
|
+
<td><%= number_with_delimiter(queue.size) %> </td>
|
20
|
+
<td><% queue_latency = queue.latency %><%= number_with_delimiter(queue_latency.round(2)) %><%= (queue_latency < 60) ? '' : " (#{relative_time(Time.at(Time.now.to_f - queue_latency))})" %> </td>
|
21
|
+
<td class="delete-confirm">
|
22
|
+
<form action="<%=root_path %>queues/<%= CGI.escape(queue.name) %>" method="post">
|
23
|
+
<%= csrf_tag %>
|
24
|
+
<input class="btn btn-danger btn-xs" type="submit" name="delete" value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSureDeleteQueue', :queue => h(queue.name)) %>" />
|
25
|
+
</form>
|
26
|
+
</td>
|
27
|
+
</tr>
|
28
|
+
<% end %>
|
29
|
+
</table>
|
30
|
+
</div>
|
@@ -0,0 +1,80 @@
|
|
1
|
+
<header class="row">
|
2
|
+
<div class="col-sm-5">
|
3
|
+
<h3><%= t('Retries') %></h3>
|
4
|
+
</div>
|
5
|
+
<% if @retries.size > 0 && @total_size > @count %>
|
6
|
+
<div class="col-sm-4">
|
7
|
+
<%= erb :_paging, locals: { url: "#{root_path}retries" } %>
|
8
|
+
</div>
|
9
|
+
<% end %>
|
10
|
+
<%= filtering('retries') %>
|
11
|
+
</header>
|
12
|
+
|
13
|
+
<% if @retries.size > 0 %>
|
14
|
+
<form action="<%= root_path %>retries" method="post">
|
15
|
+
<%= csrf_tag %>
|
16
|
+
<div class="table_container">
|
17
|
+
<table class="table table-striped table-bordered table-white">
|
18
|
+
<thead>
|
19
|
+
<tr>
|
20
|
+
<th class="table-checkbox checkbox-column">
|
21
|
+
<label>
|
22
|
+
<input type="checkbox" class="check_all" />
|
23
|
+
</label>
|
24
|
+
</th>
|
25
|
+
<th><%= t('NextRetry') %></th>
|
26
|
+
<th><%= t('RetryCount') %></th>
|
27
|
+
<th><%= t('Queue') %></th>
|
28
|
+
<th><%= t('Job') %></th>
|
29
|
+
<th><%= t('Arguments') %></th>
|
30
|
+
<th><%= t('Error') %></th>
|
31
|
+
</tr>
|
32
|
+
</thead>
|
33
|
+
<% @retries.each do |entry| %>
|
34
|
+
<tr>
|
35
|
+
<td class="table-checkbox">
|
36
|
+
<label>
|
37
|
+
<input type='checkbox' name='key[]' value='<%= job_params(entry.item, entry.score) %>' />
|
38
|
+
</label>
|
39
|
+
</td>
|
40
|
+
<td>
|
41
|
+
<a href="<%= root_path %>retries/<%= job_params(entry.item, entry.score) %>"><%= relative_time(entry.at) %></a>
|
42
|
+
</td>
|
43
|
+
<td><%= entry['retry_count'] %></td>
|
44
|
+
<td>
|
45
|
+
<a href="<%= root_path %>queues/<%= entry.queue %>"><%= entry.queue %></a>
|
46
|
+
</td>
|
47
|
+
<td><%= entry.display_class %></td>
|
48
|
+
<td>
|
49
|
+
<div class="args"><%= display_args(entry.display_args) %></div>
|
50
|
+
</td>
|
51
|
+
<td>
|
52
|
+
<div><%= h truncate("#{entry['error_class']}: #{entry['error_message']}", 200) %></div>
|
53
|
+
</td>
|
54
|
+
</tr>
|
55
|
+
<% end %>
|
56
|
+
</table>
|
57
|
+
</div>
|
58
|
+
<input class="btn btn-primary btn-xs pull-left flip" type="submit" name="retry" value="<%= t('RetryNow') %>" />
|
59
|
+
<input class="btn btn-danger btn-xs pull-left flip" type="submit" name="delete" value="<%= t('Delete') %>" />
|
60
|
+
<input class="btn btn-danger btn-xs pull-left flip" type="submit" name="kill" value="<%= t('Kill') %>" />
|
61
|
+
</form>
|
62
|
+
|
63
|
+
<% unfiltered? do %>
|
64
|
+
<form action="<%= root_path %>retries/all/delete" method="post">
|
65
|
+
<%= csrf_tag %>
|
66
|
+
<input class="btn btn-danger btn-xs pull-right flip" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
67
|
+
</form>
|
68
|
+
<form action="<%= root_path %>retries/all/retry" method="post">
|
69
|
+
<%= csrf_tag %>
|
70
|
+
<input class="btn btn-danger btn-xs pull-right flip" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
71
|
+
</form>
|
72
|
+
<form action="<%= root_path %>retries/all/kill" method="post">
|
73
|
+
<%= csrf_tag %>
|
74
|
+
<input class="btn btn-danger btn-xs pull-right flip" type="submit" name="kill" value="<%= t('KillAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
75
|
+
</form>
|
76
|
+
<% end %>
|
77
|
+
|
78
|
+
<% else %>
|
79
|
+
<div class="alert alert-success"><%= t('NoRetriesFound') %></div>
|
80
|
+
<% end %>
|
data/web/views/retry.erb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
<%= erb :_job_info, locals: { job: @retry, type: :retry } %>
|
2
|
+
|
3
|
+
<h3><%= t('Error') %></h3>
|
4
|
+
<div class="table_container">
|
5
|
+
<table class="error table table-bordered table-striped">
|
6
|
+
<tbody>
|
7
|
+
<tr>
|
8
|
+
<th><%= t('ErrorClass') %></th>
|
9
|
+
<td>
|
10
|
+
<code><%= h @retry['error_class'] %></code>
|
11
|
+
</td>
|
12
|
+
</tr>
|
13
|
+
<tr>
|
14
|
+
<th><%= t('ErrorMessage') %></th>
|
15
|
+
<td><%= h(@retry['error_message']) %></td>
|
16
|
+
</tr>
|
17
|
+
<% if !@retry['error_backtrace'].nil? %>
|
18
|
+
<tr>
|
19
|
+
<th><%= t('ErrorBacktrace') %></th>
|
20
|
+
<td>
|
21
|
+
<code><%= @retry['error_backtrace'].join("<br/>") %></code>
|
22
|
+
</td>
|
23
|
+
</tr>
|
24
|
+
<% end %>
|
25
|
+
</tbody>
|
26
|
+
</table>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<form class="form-horizontal" action="<%= root_path %>retries/<%= job_params(@retry, @retry.score) %>" method="post">
|
30
|
+
<%= csrf_tag %>
|
31
|
+
<a class="btn btn-default" href="<%= root_path %>retries"><%= t('GoBack') %></a>
|
32
|
+
<input class="btn btn-primary" type="submit" name="retry" value="<%= t('RetryNow') %>" />
|
33
|
+
<input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>" />
|
34
|
+
</form>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<header class="row">
|
2
|
+
<div class="col-sm-5">
|
3
|
+
<h3><%= t('ScheduledJobs') %></h3>
|
4
|
+
</div>
|
5
|
+
<% if @scheduled.size > 0 && @total_size > @count %>
|
6
|
+
<div class="col-sm-4">
|
7
|
+
<%= erb :_paging, locals: { url: "#{root_path}scheduled" } %>
|
8
|
+
</div>
|
9
|
+
<% end %>
|
10
|
+
<%= filtering('scheduled') %>
|
11
|
+
</header>
|
12
|
+
|
13
|
+
<% if @scheduled.size > 0 %>
|
14
|
+
|
15
|
+
<form action="<%= root_path %>scheduled" method="post">
|
16
|
+
<%= csrf_tag %>
|
17
|
+
<div class="table_container">
|
18
|
+
<table class="table table-striped table-bordered table-white">
|
19
|
+
<thead>
|
20
|
+
<tr>
|
21
|
+
<th class="checkbox-column">
|
22
|
+
<input type="checkbox" class="check_all" />
|
23
|
+
</th>
|
24
|
+
<th><%= t('When') %></th>
|
25
|
+
<th><%= t('Queue') %></th>
|
26
|
+
<th><%= t('Job') %></th>
|
27
|
+
<th><%= t('Arguments') %></th>
|
28
|
+
</tr>
|
29
|
+
</thead>
|
30
|
+
<% @scheduled.each do |entry| %>
|
31
|
+
<tr>
|
32
|
+
<td>
|
33
|
+
<input type='checkbox' name='key[]' value='<%= job_params(entry.item, entry.score) %>' />
|
34
|
+
</td>
|
35
|
+
<td>
|
36
|
+
<a href="<%= root_path %>scheduled/<%= job_params(entry.item, entry.score) %>"><%= relative_time(entry.at) %></a>
|
37
|
+
</td>
|
38
|
+
<td>
|
39
|
+
<a href="<%= root_path %>queues/<%= entry.queue %>"><%= entry.queue %></a>
|
40
|
+
</td>
|
41
|
+
<td><%= entry.display_class %></td>
|
42
|
+
<td>
|
43
|
+
<div class="args"><%= display_args(entry.display_args) %></div>
|
44
|
+
</td>
|
45
|
+
</tr>
|
46
|
+
<% end %>
|
47
|
+
</table>
|
48
|
+
</div>
|
49
|
+
<input class="btn btn-danger pull-right flip" type="submit" name="delete" value="<%= t('Delete') %>" />
|
50
|
+
<input class="btn btn-danger pull-right flip" type="submit" name="add_to_queue" value="<%= t('AddToQueue') %>" />
|
51
|
+
</form>
|
52
|
+
<% else %>
|
53
|
+
<div class="alert alert-success"><%= t('NoScheduledFound') %></div>
|
54
|
+
<% end %>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<%= erb :_job_info, locals: { job: @job, type: :scheduled } %>
|
2
|
+
|
3
|
+
<form class="form-horizontal" action="<%= root_path %>scheduled/<%= job_params(@job, @job.score) %>" method="post">
|
4
|
+
<%= csrf_tag %>
|
5
|
+
<a class="btn btn-default" href="<%= root_path %>scheduled"><%= t('GoBack') %></a>
|
6
|
+
<input class="btn btn-primary" type="submit" name="add_to_queue" value="<%= t('AddToQueue') %>" />
|
7
|
+
<input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>" />
|
8
|
+
</form>
|
metadata
ADDED
@@ -0,0 +1,230 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sidekiq
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 5.2.8
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mike Perham
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-02-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: redis
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.3.5
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.3.5
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: connection_pool
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '2.2'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 2.2.2
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '2.2'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 2.2.2
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: rack
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "<"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 2.1.0
|
60
|
+
type: :runtime
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "<"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 2.1.0
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: rack-protection
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 1.5.0
|
74
|
+
type: :runtime
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 1.5.0
|
81
|
+
description: Simple, efficient background processing for Ruby.
|
82
|
+
email:
|
83
|
+
- mperham@gmail.com
|
84
|
+
executables:
|
85
|
+
- sidekiq
|
86
|
+
- sidekiqctl
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- ".circleci/config.yml"
|
91
|
+
- ".github/contributing.md"
|
92
|
+
- ".github/issue_template.md"
|
93
|
+
- ".gitignore"
|
94
|
+
- ".travis.yml"
|
95
|
+
- 3.0-Upgrade.md
|
96
|
+
- 4.0-Upgrade.md
|
97
|
+
- 5.0-Upgrade.md
|
98
|
+
- COMM-LICENSE
|
99
|
+
- Changes.md
|
100
|
+
- Ent-Changes.md
|
101
|
+
- Gemfile
|
102
|
+
- LICENSE
|
103
|
+
- Pro-2.0-Upgrade.md
|
104
|
+
- Pro-3.0-Upgrade.md
|
105
|
+
- Pro-4.0-Upgrade.md
|
106
|
+
- Pro-Changes.md
|
107
|
+
- README.md
|
108
|
+
- Rakefile
|
109
|
+
- bin/sidekiq
|
110
|
+
- bin/sidekiqctl
|
111
|
+
- bin/sidekiqload
|
112
|
+
- code_of_conduct.md
|
113
|
+
- lib/generators/sidekiq/templates/worker.rb.erb
|
114
|
+
- lib/generators/sidekiq/templates/worker_spec.rb.erb
|
115
|
+
- lib/generators/sidekiq/templates/worker_test.rb.erb
|
116
|
+
- lib/generators/sidekiq/worker_generator.rb
|
117
|
+
- lib/sidekiq.rb
|
118
|
+
- lib/sidekiq/api.rb
|
119
|
+
- lib/sidekiq/cli.rb
|
120
|
+
- lib/sidekiq/client.rb
|
121
|
+
- lib/sidekiq/core_ext.rb
|
122
|
+
- lib/sidekiq/ctl.rb
|
123
|
+
- lib/sidekiq/delay.rb
|
124
|
+
- lib/sidekiq/exception_handler.rb
|
125
|
+
- lib/sidekiq/extensions/action_mailer.rb
|
126
|
+
- lib/sidekiq/extensions/active_record.rb
|
127
|
+
- lib/sidekiq/extensions/class_methods.rb
|
128
|
+
- lib/sidekiq/extensions/generic_proxy.rb
|
129
|
+
- lib/sidekiq/fetch.rb
|
130
|
+
- lib/sidekiq/job_logger.rb
|
131
|
+
- lib/sidekiq/job_retry.rb
|
132
|
+
- lib/sidekiq/launcher.rb
|
133
|
+
- lib/sidekiq/logging.rb
|
134
|
+
- lib/sidekiq/manager.rb
|
135
|
+
- lib/sidekiq/middleware/chain.rb
|
136
|
+
- lib/sidekiq/middleware/i18n.rb
|
137
|
+
- lib/sidekiq/middleware/server/active_record.rb
|
138
|
+
- lib/sidekiq/paginator.rb
|
139
|
+
- lib/sidekiq/processor.rb
|
140
|
+
- lib/sidekiq/rails.rb
|
141
|
+
- lib/sidekiq/redis_connection.rb
|
142
|
+
- lib/sidekiq/scheduled.rb
|
143
|
+
- lib/sidekiq/testing.rb
|
144
|
+
- lib/sidekiq/testing/inline.rb
|
145
|
+
- lib/sidekiq/util.rb
|
146
|
+
- lib/sidekiq/version.rb
|
147
|
+
- lib/sidekiq/web.rb
|
148
|
+
- lib/sidekiq/web/action.rb
|
149
|
+
- lib/sidekiq/web/application.rb
|
150
|
+
- lib/sidekiq/web/helpers.rb
|
151
|
+
- lib/sidekiq/web/router.rb
|
152
|
+
- lib/sidekiq/worker.rb
|
153
|
+
- sidekiq.gemspec
|
154
|
+
- web/assets/images/favicon.ico
|
155
|
+
- web/assets/images/logo.png
|
156
|
+
- web/assets/images/status.png
|
157
|
+
- web/assets/javascripts/application.js
|
158
|
+
- web/assets/javascripts/dashboard.js
|
159
|
+
- web/assets/stylesheets/application-rtl.css
|
160
|
+
- web/assets/stylesheets/application.css
|
161
|
+
- web/assets/stylesheets/bootstrap-rtl.min.css
|
162
|
+
- web/assets/stylesheets/bootstrap.css
|
163
|
+
- web/locales/ar.yml
|
164
|
+
- web/locales/cs.yml
|
165
|
+
- web/locales/da.yml
|
166
|
+
- web/locales/de.yml
|
167
|
+
- web/locales/el.yml
|
168
|
+
- web/locales/en.yml
|
169
|
+
- web/locales/es.yml
|
170
|
+
- web/locales/fa.yml
|
171
|
+
- web/locales/fr.yml
|
172
|
+
- web/locales/he.yml
|
173
|
+
- web/locales/hi.yml
|
174
|
+
- web/locales/it.yml
|
175
|
+
- web/locales/ja.yml
|
176
|
+
- web/locales/ko.yml
|
177
|
+
- web/locales/nb.yml
|
178
|
+
- web/locales/nl.yml
|
179
|
+
- web/locales/pl.yml
|
180
|
+
- web/locales/pt-br.yml
|
181
|
+
- web/locales/pt.yml
|
182
|
+
- web/locales/ru.yml
|
183
|
+
- web/locales/sv.yml
|
184
|
+
- web/locales/ta.yml
|
185
|
+
- web/locales/uk.yml
|
186
|
+
- web/locales/ur.yml
|
187
|
+
- web/locales/zh-cn.yml
|
188
|
+
- web/locales/zh-tw.yml
|
189
|
+
- web/views/_footer.erb
|
190
|
+
- web/views/_job_info.erb
|
191
|
+
- web/views/_nav.erb
|
192
|
+
- web/views/_paging.erb
|
193
|
+
- web/views/_poll_link.erb
|
194
|
+
- web/views/_status.erb
|
195
|
+
- web/views/_summary.erb
|
196
|
+
- web/views/busy.erb
|
197
|
+
- web/views/dashboard.erb
|
198
|
+
- web/views/dead.erb
|
199
|
+
- web/views/layout.erb
|
200
|
+
- web/views/morgue.erb
|
201
|
+
- web/views/queue.erb
|
202
|
+
- web/views/queues.erb
|
203
|
+
- web/views/retries.erb
|
204
|
+
- web/views/retry.erb
|
205
|
+
- web/views/scheduled.erb
|
206
|
+
- web/views/scheduled_job_info.erb
|
207
|
+
homepage: http://sidekiq.org
|
208
|
+
licenses:
|
209
|
+
- LGPL-3.0
|
210
|
+
metadata: {}
|
211
|
+
post_install_message:
|
212
|
+
rdoc_options: []
|
213
|
+
require_paths:
|
214
|
+
- lib
|
215
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
216
|
+
requirements:
|
217
|
+
- - ">="
|
218
|
+
- !ruby/object:Gem::Version
|
219
|
+
version: 2.2.2
|
220
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
221
|
+
requirements:
|
222
|
+
- - ">="
|
223
|
+
- !ruby/object:Gem::Version
|
224
|
+
version: '0'
|
225
|
+
requirements: []
|
226
|
+
rubygems_version: 3.0.3
|
227
|
+
signing_key:
|
228
|
+
specification_version: 4
|
229
|
+
summary: Simple, efficient background processing for Ruby
|
230
|
+
test_files: []
|