sidekiq 7.3.10 → 8.0.9

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.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +125 -4
  3. data/README.md +16 -13
  4. data/bin/sidekiqload +10 -10
  5. data/bin/webload +69 -0
  6. data/lib/active_job/queue_adapters/sidekiq_adapter.rb +104 -58
  7. data/lib/generators/sidekiq/templates/job.rb.erb +1 -1
  8. data/lib/sidekiq/api.rb +142 -44
  9. data/lib/sidekiq/capsule.rb +10 -6
  10. data/lib/sidekiq/cli.rb +15 -19
  11. data/lib/sidekiq/client.rb +28 -17
  12. data/lib/sidekiq/component.rb +42 -3
  13. data/lib/sidekiq/config.rb +31 -22
  14. data/lib/sidekiq/embedded.rb +2 -1
  15. data/lib/sidekiq/iterable_job.rb +1 -0
  16. data/lib/sidekiq/job/iterable.rb +46 -18
  17. data/lib/sidekiq/job.rb +2 -2
  18. data/lib/sidekiq/job_logger.rb +8 -6
  19. data/lib/sidekiq/job_retry.rb +33 -10
  20. data/lib/sidekiq/job_util.rb +5 -1
  21. data/lib/sidekiq/launcher.rb +16 -6
  22. data/lib/sidekiq/loader.rb +57 -0
  23. data/lib/sidekiq/logger.rb +25 -69
  24. data/lib/sidekiq/manager.rb +0 -1
  25. data/lib/sidekiq/metrics/query.rb +71 -45
  26. data/lib/sidekiq/metrics/shared.rb +8 -5
  27. data/lib/sidekiq/metrics/tracking.rb +12 -7
  28. data/lib/sidekiq/middleware/current_attributes.rb +11 -19
  29. data/lib/sidekiq/monitor.rb +4 -8
  30. data/lib/sidekiq/paginator.rb +8 -1
  31. data/lib/sidekiq/processor.rb +21 -14
  32. data/lib/sidekiq/profiler.rb +73 -0
  33. data/lib/sidekiq/rails.rb +46 -67
  34. data/lib/sidekiq/redis_client_adapter.rb +0 -1
  35. data/lib/sidekiq/testing.rb +3 -3
  36. data/lib/sidekiq/version.rb +2 -2
  37. data/lib/sidekiq/web/action.rb +146 -83
  38. data/lib/sidekiq/web/application.rb +361 -330
  39. data/lib/sidekiq/web/config.rb +120 -0
  40. data/lib/sidekiq/web/helpers.rb +56 -34
  41. data/lib/sidekiq/web/router.rb +60 -76
  42. data/lib/sidekiq/web.rb +51 -156
  43. data/lib/sidekiq.rb +6 -1
  44. data/sidekiq.gemspec +6 -6
  45. data/web/assets/images/logo.png +0 -0
  46. data/web/assets/images/status.png +0 -0
  47. data/web/assets/javascripts/application.js +42 -26
  48. data/web/assets/javascripts/base-charts.js +30 -16
  49. data/web/assets/javascripts/chartjs-adapter-date-fns.min.js +7 -0
  50. data/web/assets/javascripts/dashboard.js +1 -1
  51. data/web/assets/javascripts/metrics.js +16 -34
  52. data/web/assets/stylesheets/style.css +776 -0
  53. data/web/locales/ar.yml +2 -0
  54. data/web/locales/cs.yml +2 -0
  55. data/web/locales/da.yml +2 -0
  56. data/web/locales/de.yml +2 -0
  57. data/web/locales/el.yml +2 -0
  58. data/web/locales/en.yml +7 -0
  59. data/web/locales/es.yml +25 -2
  60. data/web/locales/fa.yml +2 -0
  61. data/web/locales/fr.yml +2 -0
  62. data/web/locales/gd.yml +2 -0
  63. data/web/locales/he.yml +2 -0
  64. data/web/locales/hi.yml +2 -0
  65. data/web/locales/it.yml +9 -0
  66. data/web/locales/ja.yml +2 -0
  67. data/web/locales/ko.yml +2 -0
  68. data/web/locales/lt.yml +2 -0
  69. data/web/locales/nb.yml +2 -0
  70. data/web/locales/nl.yml +2 -0
  71. data/web/locales/pl.yml +2 -0
  72. data/web/locales/{pt-br.yml → pt-BR.yml} +3 -1
  73. data/web/locales/pt.yml +2 -0
  74. data/web/locales/ru.yml +2 -0
  75. data/web/locales/sv.yml +2 -0
  76. data/web/locales/ta.yml +2 -0
  77. data/web/locales/tr.yml +2 -0
  78. data/web/locales/uk.yml +7 -5
  79. data/web/locales/ur.yml +2 -0
  80. data/web/locales/vi.yml +2 -0
  81. data/web/locales/{zh-cn.yml → zh-CN.yml} +86 -73
  82. data/web/locales/{zh-tw.yml → zh-TW.yml} +3 -1
  83. data/web/views/_footer.erb +31 -33
  84. data/web/views/_job_info.erb +91 -89
  85. data/web/views/_metrics_period_select.erb +13 -10
  86. data/web/views/_nav.erb +14 -21
  87. data/web/views/_paging.erb +22 -21
  88. data/web/views/_poll_link.erb +2 -2
  89. data/web/views/_summary.erb +16 -16
  90. data/web/views/busy.erb +123 -125
  91. data/web/views/dashboard.erb +62 -66
  92. data/web/views/dead.erb +31 -27
  93. data/web/views/filtering.erb +3 -3
  94. data/web/views/layout.erb +12 -28
  95. data/web/views/metrics.erb +76 -82
  96. data/web/views/metrics_for_job.erb +45 -46
  97. data/web/views/morgue.erb +65 -70
  98. data/web/views/profiles.erb +43 -0
  99. data/web/views/queue.erb +54 -52
  100. data/web/views/queues.erb +43 -41
  101. data/web/views/retries.erb +70 -75
  102. data/web/views/retry.erb +32 -27
  103. data/web/views/scheduled.erb +63 -55
  104. data/web/views/scheduled_job_info.erb +3 -3
  105. metadata +24 -41
  106. data/web/assets/stylesheets/application-dark.css +0 -147
  107. data/web/assets/stylesheets/application-rtl.css +0 -163
  108. data/web/assets/stylesheets/application.css +0 -759
  109. data/web/assets/stylesheets/bootstrap-rtl.min.css +0 -9
  110. data/web/assets/stylesheets/bootstrap.css +0 -5
  111. data/web/views/_status.erb +0 -4
data/web/views/queues.erb CHANGED
@@ -1,44 +1,46 @@
1
- <div class="header-container">
2
- <h1><%= t('Queues') %></h1>
3
- </div>
1
+ <section>
2
+ <header>
3
+ <h1><%= t('Queues') %></h1>
4
+ </header>
4
5
 
5
- <div class="table_container">
6
- <table class="queues table table-hover table-bordered table-striped">
7
- <thead>
8
- <th><%= t('Queue') %></th>
9
- <th><%= t('Size') %></th>
10
- <th><%= t('Latency') %></th>
11
- <th><%= t('Actions') %></th>
12
- </thead>
13
- <% @queues.each do |queue| %>
14
- <tr>
15
- <td>
16
- <a href="<%= root_path %>queues/<%= CGI.escape(queue.name) %>"><%= h queue.name %></a>
17
- <% if queue.paused? %>
18
- <span class="label label-danger"><%= t('Paused') %></span>
19
- <% end %>
20
- </td>
21
- <td class="num"><%= number_with_delimiter(queue.size) %> </td>
22
- <td class="num">
23
- <% queue_latency = queue.latency %>
24
- <%= (queue_latency < 60) ? '' : " (#{relative_time(Time.at(Time.now.to_f - queue_latency))})" %>
25
- <%= number_with_delimiter(queue_latency, precision: 2) %>
26
- </td>
27
- <td class="delete-confirm">
28
- <form action="<%=root_path %>queues/<%= CGI.escape(queue.name) %>" method="post">
29
- <%= csrf_tag %>
30
- <input class="btn btn-danger" type="submit" name="delete" title="This will delete all jobs within the queue, it will reappear if you push more jobs to it in the future." value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSureDeleteQueue', :queue => h(queue.name)) %>" />
6
+ <div class="table_container">
7
+ <table>
8
+ <thead>
9
+ <th><%= t('Queue') %></th>
10
+ <th><%= t('Size') %></th>
11
+ <th><%= t('Latency') %></th>
12
+ <th><%= t('Actions') %></th>
13
+ </thead>
14
+ <% @queues.each do |queue| %>
15
+ <tr>
16
+ <td>
17
+ <a href="<%= root_path %>queues/<%= CGI.escape(queue.name) %>"><%= h queue.name %></a>
18
+ <% if queue.paused? %>
19
+ <span class="label label-danger"><%= t('Paused') %></span>
20
+ <% end %>
21
+ </td>
22
+ <td class="num"><%= number_with_delimiter(queue.size) %> </td>
23
+ <td class="num">
24
+ <% queue_latency = queue.latency %>
25
+ <%= (queue_latency < 60) ? '' : " (#{relative_time(Time.at(Time.now.to_f - queue_latency))})" %>
26
+ <%= number_with_delimiter(queue_latency, precision: 2) %>
27
+ </td>
28
+ <td class="delete-confirm">
29
+ <form action="<%= root_path %>queues/<%= CGI.escape(queue.name) %>" method="post">
30
+ <%= csrf_tag %>
31
+ <input class="btn btn-danger" type="submit" name="delete" title="This will delete all jobs within the queue, it will reappear if you push more jobs to it in the future." value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSureDeleteQueue', :queue => h(queue.name)) %>">
31
32
 
32
- <% if Sidekiq.pro? %>
33
- <% if queue.paused? %>
34
- <input class="btn btn-danger" type="submit" name="unpause" value="<%= t('Unpause') %>" />
35
- <% else %>
36
- <input class="btn btn-danger" type="submit" name="pause" value="<%= t('Pause') %>" />
33
+ <% if Sidekiq.pro? %>
34
+ <% if queue.paused? %>
35
+ <input class="btn btn-danger" type="submit" name="unpause" value="<%= t('Unpause') %>">
36
+ <% else %>
37
+ <input class="btn btn-danger" type="submit" name="pause" value="<%= t('Pause') %>">
38
+ <% end %>
37
39
  <% end %>
38
- <% end %>
39
- </form>
40
- </td>
41
- </tr>
42
- <% end %>
43
- </table>
44
- </div>
40
+ </form>
41
+ </td>
42
+ </tr>
43
+ <% end %>
44
+ </table>
45
+ </div>
46
+ </section>
@@ -1,79 +1,74 @@
1
- <div class="header-container">
2
- <h1><%= t('Retries') %></h1>
3
- <% if @retries.size > 0 && @total_size > @count %>
4
- <%= erb :_paging, locals: { url: "#{root_path}retries" } %>
5
- <% end %>
6
- <%= filtering('retries') %>
7
- </div>
8
-
9
- <% if @retries.size > 0 %>
10
- <form action="<%= root_path %>retries" method="post">
11
- <%= csrf_tag %>
12
- <div class="table_container">
13
- <table class="table table-striped table-bordered table-hover">
14
- <thead>
15
- <tr>
16
- <th class="table-checkbox checkbox-column">
17
- <label>
18
- <input type="checkbox" class="check_all" />
19
- </label>
20
- </th>
21
- <th><%= t('NextRetry') %></th>
22
- <th><%= t('RetryCount') %></th>
23
- <th><%= t('Queue') %></th>
24
- <th><%= t('Job') %></th>
25
- <th><%= t('Arguments') %></th>
26
- <th><%= t('Error') %></th>
27
- </tr>
28
- </thead>
29
- <% @retries.each do |entry| %>
30
- <tr>
31
- <td class="table-checkbox">
32
- <label>
33
- <input type='checkbox' name='key[]' value='<%= job_params(entry.item, entry.score) %>' class='shift_clickable' />
34
- </label>
35
- </td>
36
- <td>
37
- <a href="<%= root_path %>retries/<%= job_params(entry.item, entry.score) %>"><%= relative_time(entry.at) %></a>
38
- </td>
39
- <td><%= entry['retry_count'] %></td>
40
- <td>
41
- <a href="<%= root_path %>queues/<%= entry.queue %>"><%= entry.queue %></a>
42
- </td>
43
- <td>
44
- <%= entry.display_class %>
45
- <%= display_tags(entry, "retries") %>
46
- </td>
47
- <td>
48
- <div class="args"><%= display_args(entry.display_args) %></div>
49
- </td>
50
- <td>
51
- <div><%= h truncate("#{entry['error_class']}: #{entry['error_message']}", 200) %></div>
52
- </td>
53
- </tr>
54
- <% end %>
55
- </table>
56
- </div>
57
- <input class="btn btn-primary pull-left flip" type="submit" name="retry" value="<%= t('RetryNow') %>" />
58
- <input class="btn btn-danger pull-left flip" type="submit" name="delete" value="<%= t('Delete') %>" />
59
- <input class="btn btn-danger pull-left flip" type="submit" name="kill" value="<%= t('Kill') %>" />
60
- </form>
1
+ <section>
2
+ <header>
3
+ <h1><%= t('Retries') %></h1>
4
+ <% if @retries.size > 0 && @total_size > @count %>
5
+ <%= erb :_paging, locals: { url: "#{root_path}retries" } %>
6
+ <% end %>
7
+ <%= filtering('retries') %>
8
+ </header>
61
9
 
62
- <% unfiltered? do %>
63
- <form action="<%= root_path %>retries/all/delete" method="post">
64
- <%= csrf_tag %>
65
- <input class="btn btn-danger pull-right flip" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
66
- </form>
67
- <form action="<%= root_path %>retries/all/retry" method="post">
10
+ <% if @retries.size > 0 %>
11
+ <form action="<%= root_path %>retries" method="post">
68
12
  <%= csrf_tag %>
69
- <input class="btn btn-danger pull-right flip" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
70
- </form>
71
- <form action="<%= root_path %>retries/all/kill" method="post">
72
- <%= csrf_tag %>
73
- <input class="btn btn-danger pull-right flip" type="submit" name="kill" value="<%= t('KillAll') %>" data-confirm="<%= t('AreYouSure') %>" />
13
+ <div class="table_container">
14
+ <table>
15
+ <thead>
16
+ <tr>
17
+ <th>
18
+ <label>
19
+ <input type="checkbox" class="check_all check-all-items">
20
+ </label>
21
+ </th>
22
+ <th><%= t('NextRetry') %></th>
23
+ <th><%= t('RetryCount') %></th>
24
+ <th><%= t('Queue') %></th>
25
+ <th><%= t('Job') %></th>
26
+ <th><%= t('Arguments') %></th>
27
+ <th><%= t('Error') %></th>
28
+ </tr>
29
+ </thead>
30
+ <% @retries.each do |entry| %>
31
+ <tr>
32
+ <td>
33
+ <label>
34
+ <input type="checkbox" name="key[]" value="<%= job_params(entry.item, entry.score) %>" class="shift_clickable select-item-checkbox">
35
+ </label>
36
+ </td>
37
+ <td>
38
+ <a href="<%= root_path %>retries/<%= job_params(entry.item, entry.score) %>"><%= relative_time(entry.at) %></a>
39
+ </td>
40
+ <td><%= entry['retry_count'] %></td>
41
+ <td>
42
+ <a href="<%= root_path %>queues/<%= entry.queue %>"><%= entry.queue %></a>
43
+ </td>
44
+ <td>
45
+ <%= entry.display_class %>
46
+ <%= display_tags(entry, "retries") %>
47
+ </td>
48
+ <td>
49
+ <code>
50
+ <div class="args"><%= display_args(entry.display_args) %></div>
51
+ </code>
52
+ </td>
53
+ <td>
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
+ </td>
56
+ </tr>
57
+ <% end %>
58
+ </table>
59
+ </div>
60
+ <div class="buttons-row">
61
+ <input class="btn btn-primary" type="submit" name="retry" value="<%= t('RetryNow') %>">
62
+ <input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>">
63
+ <input class="btn btn-danger" type="submit" name="kill" value="<%= t('Kill') %>">
64
+ <!-- Retry all -->
65
+ <button class="btn btn-primary bulk-action-buttons bulk-lead-button" type="submit" name="action" value="retry_all" formaction="<%= "#{root_path}retries/all/retry" %>"><%= t('RetryAll') %></button>
66
+ <button class="btn btn-danger bulk-action-buttons" type="submit" name="action" value="delete_all" formaction="<%= "#{root_path}retries/all/delete" %>"><%= t('DeleteAll') %></button>
67
+ <button class="btn btn-danger bulk-action-buttons" type="submit" name="action" value="kill_all" formaction="<%= "#{root_path}retries/all/kill" %>"><%= t('KillAll') %></button>
68
+ </div>
74
69
  </form>
70
+
71
+ <% else %>
72
+ <div class="alert alert-success"><%= t('NoRetriesFound') %></div>
75
73
  <% end %>
76
-
77
- <% else %>
78
- <div class="alert alert-success"><%= t('NoRetriesFound') %></div>
79
- <% end %>
74
+ </section>
data/web/views/retry.erb CHANGED
@@ -1,34 +1,39 @@
1
1
  <%= erb :_job_info, locals: { job: @retry, type: :retry } %>
2
2
 
3
- <h3><%= t('Error') %></h3>
4
- <div class="table_container">
5
- <table class="error table table-bordered table-striped table-hover">
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 %>
3
+ <section>
4
+ <header>
5
+ <h2><%= t('Error') %></h2>
6
+ </header>
7
+
8
+ <div class="table_container">
9
+ <table>
10
+ <tbody>
18
11
  <tr>
19
- <th><%= t('ErrorBacktrace') %></th>
12
+ <th><%= t('ErrorClass') %></th>
20
13
  <td>
21
- <code><%= @retry.error_backtrace.join("<br/>") %></code>
14
+ <code><%= h @retry['error_class'] %></code>
22
15
  </td>
23
16
  </tr>
24
- <% end %>
25
- </tbody>
26
- </table>
27
- </div>
17
+ <tr>
18
+ <th><%= t('ErrorMessage') %></th>
19
+ <td><%= h(@retry['error_message']) %></td>
20
+ </tr>
21
+ <% if @retry.error_backtrace %>
22
+ <tr>
23
+ <th><%= t('ErrorBacktrace') %></th>
24
+ <td>
25
+ <code><%= @retry.error_backtrace.join("<br/>") %></code>
26
+ </td>
27
+ </tr>
28
+ <% end %>
29
+ </tbody>
30
+ </table>
31
+ </div>
28
32
 
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>
33
+ <form action="<%= root_path %>retries/<%= job_params(@retry, @retry.score) %>" method="post">
34
+ <%= csrf_tag %>
35
+ <a class="btn btn-default" href="<%= root_path %>retries"><%= t('GoBack') %></a>
36
+ <input class="btn btn-primary" type="submit" name="retry" value="<%= t('RetryNow') %>">
37
+ <input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>">
38
+ </form>
39
+ </section>
@@ -1,56 +1,64 @@
1
- <div class="header-container">
2
- <h1><%= t('ScheduledJobs') %></h1>
3
- <% if @scheduled.size > 0 && @total_size > @count %>
4
- <%= erb :_paging, locals: { url: "#{root_path}scheduled" } %>
5
- <% end %>
6
- <%= filtering('scheduled') %>
7
- </div>
1
+ <section>
2
+ <header>
3
+ <h1><%= t('ScheduledJobs') %></h1>
4
+ <% if @scheduled.size > 0 && @total_size > @count %>
5
+ <%= erb :_paging, locals: { url: "#{root_path}scheduled" } %>
6
+ <% end %>
7
+ <%= filtering('scheduled') %>
8
+ </header>
8
9
 
9
- <% if @scheduled.size > 0 %>
10
- <form action="<%= root_path %>scheduled" method="post">
11
- <%= csrf_tag %>
12
- <div class="table_container">
13
- <table class="table table-striped table-bordered table-hover">
14
- <thead>
15
- <tr>
16
- <th class="table-checkbox checkbox-column">
17
- <label>
18
- <input type="checkbox" class="check_all" />
19
- </label>
20
- </th>
21
- <th><%= t('When') %></th>
22
- <th><%= t('Queue') %></th>
23
- <th><%= t('Job') %></th>
24
- <th><%= t('Arguments') %></th>
25
- </tr>
26
- </thead>
27
- <% @scheduled.each do |entry| %>
28
- <tr>
29
- <td class="table-checkbox">
30
- <label>
31
- <input type='checkbox' name='key[]' value='<%= job_params(entry.item, entry.score) %>' class='shift_clickable' />
32
- </label>
33
- </td>
34
- <td>
35
- <a href="<%= root_path %>scheduled/<%= job_params(entry.item, entry.score) %>"><%= relative_time(entry.at) %></a>
36
- </td>
37
- <td>
38
- <a href="<%= root_path %>queues/<%= entry.queue %>"><%= entry.queue %></a>
39
- </td>
40
- <td>
41
- <%= entry.display_class %>
42
- <%= display_tags(entry, "scheduled") %>
43
- </td>
44
- <td>
45
- <div class="args"><%= display_args(entry.display_args) %></div>
46
- </td>
47
- </tr>
48
- <% end %>
49
- </table>
50
- </div>
51
- <input class="btn btn-danger pull-right flip" type="submit" name="delete" value="<%= t('Delete') %>" />
52
- <input class="btn btn-danger pull-right flip" type="submit" name="add_to_queue" value="<%= t('AddToQueue') %>" />
53
- </form>
54
- <% else %>
55
- <div class="alert alert-success"><%= t('NoScheduledFound') %></div>
56
- <% end %>
10
+ <% if @scheduled.size > 0 %>
11
+ <form action="<%= root_path %>scheduled" method="post">
12
+ <%= csrf_tag %>
13
+ <div class="table_container">
14
+ <table>
15
+ <thead>
16
+ <tr>
17
+ <th>
18
+ <label>
19
+ <input type="checkbox" class="check_all check-all-items">
20
+ </label>
21
+ </th>
22
+ <th><%= t('When') %></th>
23
+ <th><%= t('Queue') %></th>
24
+ <th><%= t('Job') %></th>
25
+ <th><%= t('Arguments') %></th>
26
+ </tr>
27
+ </thead>
28
+ <% @scheduled.each do |entry| %>
29
+ <tr>
30
+ <td>
31
+ <label>
32
+ <input type="checkbox" name="key[]" value="<%= job_params(entry.item, entry.score) %>" class="shift_clickable select-item-checkbox">
33
+ </label>
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>
42
+ <%= entry.display_class %>
43
+ <%= display_tags(entry, "scheduled") %>
44
+ </td>
45
+ <td>
46
+ <code>
47
+ <div class="args"><%= display_args(entry.display_args) %></div>
48
+ </code>
49
+ </td>
50
+ </tr>
51
+ <% end %>
52
+ </table>
53
+ </div>
54
+ <div class="buttons-row">
55
+ <input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>">
56
+ <input class="btn btn-danger" type="submit" name="add_to_queue" value="<%= t('AddToQueue') %>">
57
+ <button class="btn btn-danger bulk-action-buttons bulk-lead-button" type="submit" name="action" value="delete_all" formaction="<%= "#{root_path}scheduled/all/delete" %>"><%= t('DeleteAll') %></button>
58
+ <button class="btn btn-danger bulk-action-buttons" type="submit" name="action" value="add_all_to_queue" formaction="<%= "#{root_path}scheduled/all/add_to_queue" %>"><%= t('AddAllToQueue') %></button>
59
+ </div>
60
+ </form>
61
+ <% else %>
62
+ <div class="alert alert-success"><%= t('NoScheduledFound') %></div>
63
+ <% end %>
64
+ </section>
@@ -1,8 +1,8 @@
1
1
  <%= erb :_job_info, locals: { job: @job, type: :scheduled } %>
2
2
 
3
- <form class="form-horizontal" action="<%= root_path %>scheduled/<%= job_params(@job, @job.score) %>" method="post">
3
+ <form action="<%= root_path %>scheduled/<%= job_params(@job, @job.score) %>" method="post">
4
4
  <%= csrf_tag %>
5
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') %>" />
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
8
  </form>
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: 7.3.10
4
+ version: 8.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
@@ -15,88 +15,70 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 0.23.0
19
- - - "<"
20
- - !ruby/object:Gem::Version
21
- version: '1'
18
+ version: 0.23.2
22
19
  type: :runtime
23
20
  prerelease: false
24
21
  version_requirements: !ruby/object:Gem::Requirement
25
22
  requirements:
26
23
  - - ">="
27
24
  - !ruby/object:Gem::Version
28
- version: 0.23.0
29
- - - "<"
30
- - !ruby/object:Gem::Version
31
- version: '1'
25
+ version: 0.23.2
32
26
  - !ruby/object:Gem::Dependency
33
27
  name: connection_pool
34
28
  requirement: !ruby/object:Gem::Requirement
35
29
  requirements:
36
30
  - - ">="
37
31
  - !ruby/object:Gem::Version
38
- version: 2.3.0
39
- - - "<"
40
- - !ruby/object:Gem::Version
41
- version: '3'
32
+ version: 2.5.0
42
33
  type: :runtime
43
34
  prerelease: false
44
35
  version_requirements: !ruby/object:Gem::Requirement
45
36
  requirements:
46
37
  - - ">="
47
38
  - !ruby/object:Gem::Version
48
- version: 2.3.0
49
- - - "<"
50
- - !ruby/object:Gem::Version
51
- version: '3'
39
+ version: 2.5.0
52
40
  - !ruby/object:Gem::Dependency
53
41
  name: rack
54
42
  requirement: !ruby/object:Gem::Requirement
55
43
  requirements:
56
44
  - - ">="
57
45
  - !ruby/object:Gem::Version
58
- version: 2.2.4
59
- - - "<"
60
- - !ruby/object:Gem::Version
61
- version: '3.3'
46
+ version: 3.1.0
62
47
  type: :runtime
63
48
  prerelease: false
64
49
  version_requirements: !ruby/object:Gem::Requirement
65
50
  requirements:
66
51
  - - ">="
67
52
  - !ruby/object:Gem::Version
68
- version: 2.2.4
69
- - - "<"
70
- - !ruby/object:Gem::Version
71
- version: '3.3'
53
+ version: 3.1.0
72
54
  - !ruby/object:Gem::Dependency
73
- name: logger
55
+ name: json
74
56
  requirement: !ruby/object:Gem::Requirement
75
57
  requirements:
76
58
  - - ">="
77
59
  - !ruby/object:Gem::Version
78
- version: '0'
60
+ version: 2.9.0
79
61
  type: :runtime
80
62
  prerelease: false
81
63
  version_requirements: !ruby/object:Gem::Requirement
82
64
  requirements:
83
65
  - - ">="
84
66
  - !ruby/object:Gem::Version
85
- version: '0'
67
+ version: 2.9.0
86
68
  - !ruby/object:Gem::Dependency
87
- name: base64
69
+ name: logger
88
70
  requirement: !ruby/object:Gem::Requirement
89
71
  requirements:
90
72
  - - ">="
91
73
  - !ruby/object:Gem::Version
92
- version: '0'
74
+ version: 1.6.2
93
75
  type: :runtime
94
76
  prerelease: false
95
77
  version_requirements: !ruby/object:Gem::Requirement
96
78
  requirements:
97
79
  - - ">="
98
80
  - !ruby/object:Gem::Version
99
- version: '0'
81
+ version: 1.6.2
100
82
  description: Simple, efficient background processing for Ruby.
101
83
  email:
102
84
  - info@contribsys.com
@@ -113,6 +95,7 @@ files:
113
95
  - bin/sidekiq
114
96
  - bin/sidekiqload
115
97
  - bin/sidekiqmon
98
+ - bin/webload
116
99
  - lib/active_job/queue_adapters/sidekiq_adapter.rb
117
100
  - lib/generators/sidekiq/job_generator.rb
118
101
  - lib/generators/sidekiq/templates/job.rb.erb
@@ -139,6 +122,7 @@ files:
139
122
  - lib/sidekiq/job_retry.rb
140
123
  - lib/sidekiq/job_util.rb
141
124
  - lib/sidekiq/launcher.rb
125
+ - lib/sidekiq/loader.rb
142
126
  - lib/sidekiq/logger.rb
143
127
  - lib/sidekiq/manager.rb
144
128
  - lib/sidekiq/metrics/query.rb
@@ -151,6 +135,7 @@ files:
151
135
  - lib/sidekiq/monitor.rb
152
136
  - lib/sidekiq/paginator.rb
153
137
  - lib/sidekiq/processor.rb
138
+ - lib/sidekiq/profiler.rb
154
139
  - lib/sidekiq/rails.rb
155
140
  - lib/sidekiq/redis_client_adapter.rb
156
141
  - lib/sidekiq/redis_connection.rb
@@ -165,6 +150,7 @@ files:
165
150
  - lib/sidekiq/web.rb
166
151
  - lib/sidekiq/web/action.rb
167
152
  - lib/sidekiq/web/application.rb
153
+ - lib/sidekiq/web/config.rb
168
154
  - lib/sidekiq/web/csrf_protection.rb
169
155
  - lib/sidekiq/web/helpers.rb
170
156
  - lib/sidekiq/web/router.rb
@@ -177,15 +163,12 @@ files:
177
163
  - web/assets/javascripts/application.js
178
164
  - web/assets/javascripts/base-charts.js
179
165
  - web/assets/javascripts/chart.min.js
166
+ - web/assets/javascripts/chartjs-adapter-date-fns.min.js
180
167
  - web/assets/javascripts/chartjs-plugin-annotation.min.js
181
168
  - web/assets/javascripts/dashboard-charts.js
182
169
  - web/assets/javascripts/dashboard.js
183
170
  - web/assets/javascripts/metrics.js
184
- - web/assets/stylesheets/application-dark.css
185
- - web/assets/stylesheets/application-rtl.css
186
- - web/assets/stylesheets/application.css
187
- - web/assets/stylesheets/bootstrap-rtl.min.css
188
- - web/assets/stylesheets/bootstrap.css
171
+ - web/assets/stylesheets/style.css
189
172
  - web/locales/ar.yml
190
173
  - web/locales/cs.yml
191
174
  - web/locales/da.yml
@@ -205,7 +188,7 @@ files:
205
188
  - web/locales/nb.yml
206
189
  - web/locales/nl.yml
207
190
  - web/locales/pl.yml
208
- - web/locales/pt-br.yml
191
+ - web/locales/pt-BR.yml
209
192
  - web/locales/pt.yml
210
193
  - web/locales/ru.yml
211
194
  - web/locales/sv.yml
@@ -214,15 +197,14 @@ files:
214
197
  - web/locales/uk.yml
215
198
  - web/locales/ur.yml
216
199
  - web/locales/vi.yml
217
- - web/locales/zh-cn.yml
218
- - web/locales/zh-tw.yml
200
+ - web/locales/zh-CN.yml
201
+ - web/locales/zh-TW.yml
219
202
  - web/views/_footer.erb
220
203
  - web/views/_job_info.erb
221
204
  - web/views/_metrics_period_select.erb
222
205
  - web/views/_nav.erb
223
206
  - web/views/_paging.erb
224
207
  - web/views/_poll_link.erb
225
- - web/views/_status.erb
226
208
  - web/views/_summary.erb
227
209
  - web/views/busy.erb
228
210
  - web/views/dashboard.erb
@@ -232,6 +214,7 @@ files:
232
214
  - web/views/metrics.erb
233
215
  - web/views/metrics_for_job.erb
234
216
  - web/views/morgue.erb
217
+ - web/views/profiles.erb
235
218
  - web/views/queue.erb
236
219
  - web/views/queues.erb
237
220
  - web/views/retries.erb
@@ -255,7 +238,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
255
238
  requirements:
256
239
  - - ">="
257
240
  - !ruby/object:Gem::Version
258
- version: 2.7.0
241
+ version: 3.2.0
259
242
  required_rubygems_version: !ruby/object:Gem::Requirement
260
243
  requirements:
261
244
  - - ">="