sidekiq 7.3.0 → 8.0.5

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 (115) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +158 -0
  3. data/README.md +16 -13
  4. data/bin/sidekiqload +31 -22
  5. data/bin/webload +69 -0
  6. data/lib/active_job/queue_adapters/sidekiq_adapter.rb +120 -0
  7. data/lib/generators/sidekiq/job_generator.rb +2 -0
  8. data/lib/sidekiq/api.rb +184 -71
  9. data/lib/sidekiq/capsule.rb +11 -9
  10. data/lib/sidekiq/cli.rb +16 -20
  11. data/lib/sidekiq/client.rb +28 -11
  12. data/lib/sidekiq/component.rb +62 -2
  13. data/lib/sidekiq/config.rb +42 -18
  14. data/lib/sidekiq/deploy.rb +2 -0
  15. data/lib/sidekiq/embedded.rb +4 -1
  16. data/lib/sidekiq/iterable_job.rb +3 -0
  17. data/lib/sidekiq/job/interrupt_handler.rb +2 -0
  18. data/lib/sidekiq/job/iterable/active_record_enumerator.rb +3 -3
  19. data/lib/sidekiq/job/iterable.rb +82 -7
  20. data/lib/sidekiq/job_logger.rb +15 -27
  21. data/lib/sidekiq/job_retry.rb +17 -5
  22. data/lib/sidekiq/job_util.rb +7 -1
  23. data/lib/sidekiq/launcher.rb +3 -2
  24. data/lib/sidekiq/logger.rb +19 -70
  25. data/lib/sidekiq/manager.rb +0 -1
  26. data/lib/sidekiq/metrics/query.rb +73 -45
  27. data/lib/sidekiq/metrics/shared.rb +23 -9
  28. data/lib/sidekiq/metrics/tracking.rb +22 -12
  29. data/lib/sidekiq/middleware/current_attributes.rb +12 -4
  30. data/lib/sidekiq/middleware/modules.rb +2 -0
  31. data/lib/sidekiq/monitor.rb +2 -1
  32. data/lib/sidekiq/paginator.rb +14 -1
  33. data/lib/sidekiq/processor.rb +26 -19
  34. data/lib/sidekiq/profiler.rb +72 -0
  35. data/lib/sidekiq/rails.rb +44 -55
  36. data/lib/sidekiq/redis_client_adapter.rb +0 -1
  37. data/lib/sidekiq/redis_connection.rb +22 -4
  38. data/lib/sidekiq/ring_buffer.rb +2 -0
  39. data/lib/sidekiq/systemd.rb +2 -0
  40. data/lib/sidekiq/testing.rb +7 -7
  41. data/lib/sidekiq/version.rb +6 -2
  42. data/lib/sidekiq/web/action.rb +124 -69
  43. data/lib/sidekiq/web/application.rb +355 -377
  44. data/lib/sidekiq/web/config.rb +120 -0
  45. data/lib/sidekiq/web/helpers.rb +64 -33
  46. data/lib/sidekiq/web/router.rb +61 -74
  47. data/lib/sidekiq/web.rb +52 -150
  48. data/lib/sidekiq.rb +5 -4
  49. data/sidekiq.gemspec +6 -6
  50. data/web/assets/javascripts/application.js +6 -13
  51. data/web/assets/javascripts/base-charts.js +30 -16
  52. data/web/assets/javascripts/chartjs-adapter-date-fns.min.js +7 -0
  53. data/web/assets/javascripts/dashboard-charts.js +2 -0
  54. data/web/assets/javascripts/dashboard.js +7 -1
  55. data/web/assets/javascripts/metrics.js +16 -34
  56. data/web/assets/stylesheets/style.css +766 -0
  57. data/web/locales/ar.yml +1 -0
  58. data/web/locales/cs.yml +1 -0
  59. data/web/locales/da.yml +1 -0
  60. data/web/locales/de.yml +1 -0
  61. data/web/locales/el.yml +1 -0
  62. data/web/locales/en.yml +9 -1
  63. data/web/locales/es.yml +24 -2
  64. data/web/locales/fa.yml +1 -0
  65. data/web/locales/fr.yml +1 -1
  66. data/web/locales/gd.yml +1 -1
  67. data/web/locales/he.yml +1 -0
  68. data/web/locales/hi.yml +1 -0
  69. data/web/locales/it.yml +40 -1
  70. data/web/locales/ja.yml +1 -1
  71. data/web/locales/ko.yml +1 -0
  72. data/web/locales/lt.yml +1 -0
  73. data/web/locales/nb.yml +1 -0
  74. data/web/locales/nl.yml +1 -0
  75. data/web/locales/pl.yml +1 -0
  76. data/web/locales/{pt-br.yml → pt-BR.yml} +3 -3
  77. data/web/locales/pt.yml +1 -0
  78. data/web/locales/ru.yml +1 -0
  79. data/web/locales/sv.yml +1 -0
  80. data/web/locales/ta.yml +1 -0
  81. data/web/locales/tr.yml +2 -2
  82. data/web/locales/uk.yml +25 -1
  83. data/web/locales/ur.yml +1 -0
  84. data/web/locales/vi.yml +1 -0
  85. data/web/locales/{zh-cn.yml → zh-CN.yml} +85 -74
  86. data/web/locales/{zh-tw.yml → zh-TW.yml} +2 -2
  87. data/web/views/_footer.erb +31 -34
  88. data/web/views/_job_info.erb +91 -89
  89. data/web/views/_metrics_period_select.erb +13 -10
  90. data/web/views/_nav.erb +14 -21
  91. data/web/views/_paging.erb +23 -21
  92. data/web/views/_poll_link.erb +2 -2
  93. data/web/views/_summary.erb +16 -16
  94. data/web/views/busy.erb +124 -122
  95. data/web/views/dashboard.erb +63 -64
  96. data/web/views/dead.erb +31 -27
  97. data/web/views/filtering.erb +3 -4
  98. data/web/views/layout.erb +13 -29
  99. data/web/views/metrics.erb +75 -82
  100. data/web/views/metrics_for_job.erb +45 -46
  101. data/web/views/morgue.erb +61 -70
  102. data/web/views/profiles.erb +43 -0
  103. data/web/views/queue.erb +54 -52
  104. data/web/views/queues.erb +43 -41
  105. data/web/views/retries.erb +66 -75
  106. data/web/views/retry.erb +32 -27
  107. data/web/views/scheduled.erb +59 -55
  108. data/web/views/scheduled_job_info.erb +1 -1
  109. metadata +27 -29
  110. data/web/assets/stylesheets/application-dark.css +0 -147
  111. data/web/assets/stylesheets/application-rtl.css +0 -163
  112. data/web/assets/stylesheets/application.css +0 -758
  113. data/web/assets/stylesheets/bootstrap-rtl.min.css +0 -9
  114. data/web/assets/stylesheets/bootstrap.css +0 -5
  115. 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,70 @@
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" />
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' />
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
+ </div>
74
65
  </form>
66
+
67
+ <% else %>
68
+ <div class="alert alert-success"><%= t('NoRetriesFound') %></div>
75
69
  <% end %>
76
-
77
- <% else %>
78
- <div class="alert alert-success"><%= t('NoRetriesFound') %></div>
79
- <% end %>
70
+ </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,60 @@
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" />
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' />
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
+ <input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>" />
55
+ <input class="btn btn-danger" type="submit" name="add_to_queue" value="<%= t('AddToQueue') %>" />
56
+ </form>
57
+ <% else %>
58
+ <div class="alert alert-success"><%= t('NoScheduledFound') %></div>
59
+ <% end %>
60
+ </section>
@@ -1,6 +1,6 @@
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
6
  <input class="btn btn-primary" type="submit" name="add_to_queue" value="<%= t('AddToQueue') %>" />
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.3.0
4
+ version: 8.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-07-01 00:00:00.000000000 Z
10
+ date: 2025-06-30 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: redis-client
@@ -16,70 +15,70 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: 0.22.2
18
+ version: 0.23.2
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: 0.22.2
25
+ version: 0.23.2
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: connection_pool
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: 2.3.0
32
+ version: 2.5.0
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: 2.3.0
39
+ version: 2.5.0
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: rack
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - ">="
46
45
  - !ruby/object:Gem::Version
47
- version: 2.2.4
46
+ version: 3.1.0
48
47
  type: :runtime
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - ">="
53
52
  - !ruby/object:Gem::Version
54
- version: 2.2.4
53
+ version: 3.1.0
55
54
  - !ruby/object:Gem::Dependency
56
- name: concurrent-ruby
55
+ name: json
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
- - - "<"
58
+ - - ">="
60
59
  - !ruby/object:Gem::Version
61
- version: '2'
60
+ version: 2.9.0
62
61
  type: :runtime
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
- - - "<"
65
+ - - ">="
67
66
  - !ruby/object:Gem::Version
68
- version: '2'
67
+ version: 2.9.0
69
68
  - !ruby/object:Gem::Dependency
70
69
  name: logger
71
70
  requirement: !ruby/object:Gem::Requirement
72
71
  requirements:
73
72
  - - ">="
74
73
  - !ruby/object:Gem::Version
75
- version: '0'
74
+ version: 1.6.2
76
75
  type: :runtime
77
76
  prerelease: false
78
77
  version_requirements: !ruby/object:Gem::Requirement
79
78
  requirements:
80
79
  - - ">="
81
80
  - !ruby/object:Gem::Version
82
- version: '0'
81
+ version: 1.6.2
83
82
  description: Simple, efficient background processing for Ruby.
84
83
  email:
85
84
  - info@contribsys.com
@@ -96,6 +95,8 @@ files:
96
95
  - bin/sidekiq
97
96
  - bin/sidekiqload
98
97
  - bin/sidekiqmon
98
+ - bin/webload
99
+ - lib/active_job/queue_adapters/sidekiq_adapter.rb
99
100
  - lib/generators/sidekiq/job_generator.rb
100
101
  - lib/generators/sidekiq/templates/job.rb.erb
101
102
  - lib/generators/sidekiq/templates/job_spec.rb.erb
@@ -133,6 +134,7 @@ files:
133
134
  - lib/sidekiq/monitor.rb
134
135
  - lib/sidekiq/paginator.rb
135
136
  - lib/sidekiq/processor.rb
137
+ - lib/sidekiq/profiler.rb
136
138
  - lib/sidekiq/rails.rb
137
139
  - lib/sidekiq/redis_client_adapter.rb
138
140
  - lib/sidekiq/redis_connection.rb
@@ -147,6 +149,7 @@ files:
147
149
  - lib/sidekiq/web.rb
148
150
  - lib/sidekiq/web/action.rb
149
151
  - lib/sidekiq/web/application.rb
152
+ - lib/sidekiq/web/config.rb
150
153
  - lib/sidekiq/web/csrf_protection.rb
151
154
  - lib/sidekiq/web/helpers.rb
152
155
  - lib/sidekiq/web/router.rb
@@ -159,15 +162,12 @@ files:
159
162
  - web/assets/javascripts/application.js
160
163
  - web/assets/javascripts/base-charts.js
161
164
  - web/assets/javascripts/chart.min.js
165
+ - web/assets/javascripts/chartjs-adapter-date-fns.min.js
162
166
  - web/assets/javascripts/chartjs-plugin-annotation.min.js
163
167
  - web/assets/javascripts/dashboard-charts.js
164
168
  - web/assets/javascripts/dashboard.js
165
169
  - web/assets/javascripts/metrics.js
166
- - web/assets/stylesheets/application-dark.css
167
- - web/assets/stylesheets/application-rtl.css
168
- - web/assets/stylesheets/application.css
169
- - web/assets/stylesheets/bootstrap-rtl.min.css
170
- - web/assets/stylesheets/bootstrap.css
170
+ - web/assets/stylesheets/style.css
171
171
  - web/locales/ar.yml
172
172
  - web/locales/cs.yml
173
173
  - web/locales/da.yml
@@ -187,7 +187,7 @@ files:
187
187
  - web/locales/nb.yml
188
188
  - web/locales/nl.yml
189
189
  - web/locales/pl.yml
190
- - web/locales/pt-br.yml
190
+ - web/locales/pt-BR.yml
191
191
  - web/locales/pt.yml
192
192
  - web/locales/ru.yml
193
193
  - web/locales/sv.yml
@@ -196,15 +196,14 @@ files:
196
196
  - web/locales/uk.yml
197
197
  - web/locales/ur.yml
198
198
  - web/locales/vi.yml
199
- - web/locales/zh-cn.yml
200
- - web/locales/zh-tw.yml
199
+ - web/locales/zh-CN.yml
200
+ - web/locales/zh-TW.yml
201
201
  - web/views/_footer.erb
202
202
  - web/views/_job_info.erb
203
203
  - web/views/_metrics_period_select.erb
204
204
  - web/views/_nav.erb
205
205
  - web/views/_paging.erb
206
206
  - web/views/_poll_link.erb
207
- - web/views/_status.erb
208
207
  - web/views/_summary.erb
209
208
  - web/views/busy.erb
210
209
  - web/views/dashboard.erb
@@ -214,6 +213,7 @@ files:
214
213
  - web/views/metrics.erb
215
214
  - web/views/metrics_for_job.erb
216
215
  - web/views/morgue.erb
216
+ - web/views/profiles.erb
217
217
  - web/views/queue.erb
218
218
  - web/views/queues.erb
219
219
  - web/views/retries.erb
@@ -230,7 +230,6 @@ metadata:
230
230
  changelog_uri: https://github.com/sidekiq/sidekiq/blob/main/Changes.md
231
231
  source_code_uri: https://github.com/sidekiq/sidekiq
232
232
  rubygems_mfa_required: 'true'
233
- post_install_message:
234
233
  rdoc_options: []
235
234
  require_paths:
236
235
  - lib
@@ -238,15 +237,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
238
237
  requirements:
239
238
  - - ">="
240
239
  - !ruby/object:Gem::Version
241
- version: 2.7.0
240
+ version: 3.2.0
242
241
  required_rubygems_version: !ruby/object:Gem::Requirement
243
242
  requirements:
244
243
  - - ">="
245
244
  - !ruby/object:Gem::Version
246
245
  version: '0'
247
246
  requirements: []
248
- rubygems_version: 3.5.11
249
- signing_key:
247
+ rubygems_version: 3.6.2
250
248
  specification_version: 4
251
249
  summary: Simple, efficient background processing for Ruby
252
250
  test_files: []