sidekiq 7.3.6 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +60 -0
  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 +5 -18
  7. data/lib/sidekiq/api.rb +120 -36
  8. data/lib/sidekiq/capsule.rb +6 -6
  9. data/lib/sidekiq/cli.rb +15 -19
  10. data/lib/sidekiq/client.rb +13 -16
  11. data/lib/sidekiq/component.rb +62 -2
  12. data/lib/sidekiq/config.rb +24 -15
  13. data/lib/sidekiq/embedded.rb +1 -0
  14. data/lib/sidekiq/iterable_job.rb +1 -0
  15. data/lib/sidekiq/job/iterable.rb +14 -5
  16. data/lib/sidekiq/job_logger.rb +4 -4
  17. data/lib/sidekiq/job_retry.rb +17 -5
  18. data/lib/sidekiq/job_util.rb +5 -1
  19. data/lib/sidekiq/launcher.rb +1 -1
  20. data/lib/sidekiq/logger.rb +19 -70
  21. data/lib/sidekiq/manager.rb +0 -1
  22. data/lib/sidekiq/metrics/query.rb +71 -45
  23. data/lib/sidekiq/metrics/shared.rb +8 -5
  24. data/lib/sidekiq/metrics/tracking.rb +9 -7
  25. data/lib/sidekiq/middleware/current_attributes.rb +5 -17
  26. data/lib/sidekiq/paginator.rb +14 -1
  27. data/lib/sidekiq/processor.rb +21 -14
  28. data/lib/sidekiq/profiler.rb +59 -0
  29. data/lib/sidekiq/rails.rb +12 -2
  30. data/lib/sidekiq/redis_client_adapter.rb +0 -1
  31. data/lib/sidekiq/redis_connection.rb +14 -3
  32. data/lib/sidekiq/testing.rb +2 -2
  33. data/lib/sidekiq/version.rb +2 -2
  34. data/lib/sidekiq/web/action.rb +105 -73
  35. data/lib/sidekiq/web/application.rb +347 -332
  36. data/lib/sidekiq/web/config.rb +117 -0
  37. data/lib/sidekiq/web/helpers.rb +49 -23
  38. data/lib/sidekiq/web/router.rb +60 -76
  39. data/lib/sidekiq/web.rb +51 -152
  40. data/lib/sidekiq.rb +1 -1
  41. data/sidekiq.gemspec +6 -5
  42. data/web/assets/javascripts/application.js +6 -13
  43. data/web/assets/javascripts/base-charts.js +30 -16
  44. data/web/assets/javascripts/chartjs-adapter-date-fns.min.js +7 -0
  45. data/web/assets/javascripts/dashboard-charts.js +2 -0
  46. data/web/assets/javascripts/dashboard.js +6 -0
  47. data/web/assets/javascripts/metrics.js +16 -34
  48. data/web/assets/stylesheets/style.css +750 -0
  49. data/web/locales/ar.yml +1 -0
  50. data/web/locales/cs.yml +1 -0
  51. data/web/locales/da.yml +1 -0
  52. data/web/locales/de.yml +1 -0
  53. data/web/locales/el.yml +1 -0
  54. data/web/locales/en.yml +9 -0
  55. data/web/locales/es.yml +24 -2
  56. data/web/locales/fa.yml +1 -0
  57. data/web/locales/fr.yml +1 -0
  58. data/web/locales/gd.yml +1 -0
  59. data/web/locales/he.yml +1 -0
  60. data/web/locales/hi.yml +1 -0
  61. data/web/locales/it.yml +1 -0
  62. data/web/locales/ja.yml +1 -0
  63. data/web/locales/ko.yml +1 -0
  64. data/web/locales/lt.yml +1 -0
  65. data/web/locales/nb.yml +1 -0
  66. data/web/locales/nl.yml +1 -0
  67. data/web/locales/pl.yml +1 -0
  68. data/web/locales/{pt-br.yml → pt-BR.yml} +2 -1
  69. data/web/locales/pt.yml +1 -0
  70. data/web/locales/ru.yml +1 -0
  71. data/web/locales/sv.yml +1 -0
  72. data/web/locales/ta.yml +1 -0
  73. data/web/locales/tr.yml +1 -0
  74. data/web/locales/uk.yml +1 -0
  75. data/web/locales/ur.yml +1 -0
  76. data/web/locales/vi.yml +1 -0
  77. data/web/locales/{zh-cn.yml → zh-CN.yml} +85 -73
  78. data/web/locales/{zh-tw.yml → zh-TW.yml} +2 -1
  79. data/web/views/_footer.erb +31 -34
  80. data/web/views/_job_info.erb +91 -89
  81. data/web/views/_metrics_period_select.erb +13 -10
  82. data/web/views/_nav.erb +14 -21
  83. data/web/views/_paging.erb +23 -21
  84. data/web/views/_poll_link.erb +2 -2
  85. data/web/views/_summary.erb +16 -16
  86. data/web/views/busy.erb +124 -122
  87. data/web/views/dashboard.erb +63 -64
  88. data/web/views/dead.erb +31 -27
  89. data/web/views/filtering.erb +3 -3
  90. data/web/views/layout.erb +6 -22
  91. data/web/views/metrics.erb +75 -81
  92. data/web/views/metrics_for_job.erb +45 -46
  93. data/web/views/morgue.erb +61 -70
  94. data/web/views/profiles.erb +43 -0
  95. data/web/views/queue.erb +54 -52
  96. data/web/views/queues.erb +43 -41
  97. data/web/views/retries.erb +66 -75
  98. data/web/views/retry.erb +32 -27
  99. data/web/views/scheduled.erb +58 -54
  100. data/web/views/scheduled_job_info.erb +1 -1
  101. metadata +35 -24
  102. data/web/assets/stylesheets/application-dark.css +0 -147
  103. data/web/assets/stylesheets/application-rtl.css +0 -163
  104. data/web/assets/stylesheets/application.css +0 -759
  105. data/web/assets/stylesheets/bootstrap-rtl.min.css +0 -9
  106. data/web/assets/stylesheets/bootstrap.css +0 -5
  107. 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" } %>
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>
9
+
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>
5
59
  <% end %>
6
- <%= filtering('scheduled') %>
7
60
  </div>
8
-
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 %>
@@ -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.6
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-11-20 00:00:00.000000000 Z
10
+ date: 2025-03-05 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: redis-client
@@ -16,56 +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
54
+ - !ruby/object:Gem::Dependency
55
+ name: json
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 2.9.0
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 2.9.0
55
68
  - !ruby/object:Gem::Dependency
56
69
  name: logger
57
70
  requirement: !ruby/object:Gem::Requirement
58
71
  requirements:
59
72
  - - ">="
60
73
  - !ruby/object:Gem::Version
61
- version: '0'
74
+ version: 1.6.2
62
75
  type: :runtime
63
76
  prerelease: false
64
77
  version_requirements: !ruby/object:Gem::Requirement
65
78
  requirements:
66
79
  - - ">="
67
80
  - !ruby/object:Gem::Version
68
- version: '0'
81
+ version: 1.6.2
69
82
  description: Simple, efficient background processing for Ruby.
70
83
  email:
71
84
  - info@contribsys.com
@@ -82,6 +95,7 @@ files:
82
95
  - bin/sidekiq
83
96
  - bin/sidekiqload
84
97
  - bin/sidekiqmon
98
+ - bin/webload
85
99
  - lib/active_job/queue_adapters/sidekiq_adapter.rb
86
100
  - lib/generators/sidekiq/job_generator.rb
87
101
  - lib/generators/sidekiq/templates/job.rb.erb
@@ -120,6 +134,7 @@ files:
120
134
  - lib/sidekiq/monitor.rb
121
135
  - lib/sidekiq/paginator.rb
122
136
  - lib/sidekiq/processor.rb
137
+ - lib/sidekiq/profiler.rb
123
138
  - lib/sidekiq/rails.rb
124
139
  - lib/sidekiq/redis_client_adapter.rb
125
140
  - lib/sidekiq/redis_connection.rb
@@ -134,6 +149,7 @@ files:
134
149
  - lib/sidekiq/web.rb
135
150
  - lib/sidekiq/web/action.rb
136
151
  - lib/sidekiq/web/application.rb
152
+ - lib/sidekiq/web/config.rb
137
153
  - lib/sidekiq/web/csrf_protection.rb
138
154
  - lib/sidekiq/web/helpers.rb
139
155
  - lib/sidekiq/web/router.rb
@@ -146,15 +162,12 @@ files:
146
162
  - web/assets/javascripts/application.js
147
163
  - web/assets/javascripts/base-charts.js
148
164
  - web/assets/javascripts/chart.min.js
165
+ - web/assets/javascripts/chartjs-adapter-date-fns.min.js
149
166
  - web/assets/javascripts/chartjs-plugin-annotation.min.js
150
167
  - web/assets/javascripts/dashboard-charts.js
151
168
  - web/assets/javascripts/dashboard.js
152
169
  - web/assets/javascripts/metrics.js
153
- - web/assets/stylesheets/application-dark.css
154
- - web/assets/stylesheets/application-rtl.css
155
- - web/assets/stylesheets/application.css
156
- - web/assets/stylesheets/bootstrap-rtl.min.css
157
- - web/assets/stylesheets/bootstrap.css
170
+ - web/assets/stylesheets/style.css
158
171
  - web/locales/ar.yml
159
172
  - web/locales/cs.yml
160
173
  - web/locales/da.yml
@@ -174,7 +187,7 @@ files:
174
187
  - web/locales/nb.yml
175
188
  - web/locales/nl.yml
176
189
  - web/locales/pl.yml
177
- - web/locales/pt-br.yml
190
+ - web/locales/pt-BR.yml
178
191
  - web/locales/pt.yml
179
192
  - web/locales/ru.yml
180
193
  - web/locales/sv.yml
@@ -183,15 +196,14 @@ files:
183
196
  - web/locales/uk.yml
184
197
  - web/locales/ur.yml
185
198
  - web/locales/vi.yml
186
- - web/locales/zh-cn.yml
187
- - web/locales/zh-tw.yml
199
+ - web/locales/zh-CN.yml
200
+ - web/locales/zh-TW.yml
188
201
  - web/views/_footer.erb
189
202
  - web/views/_job_info.erb
190
203
  - web/views/_metrics_period_select.erb
191
204
  - web/views/_nav.erb
192
205
  - web/views/_paging.erb
193
206
  - web/views/_poll_link.erb
194
- - web/views/_status.erb
195
207
  - web/views/_summary.erb
196
208
  - web/views/busy.erb
197
209
  - web/views/dashboard.erb
@@ -201,6 +213,7 @@ files:
201
213
  - web/views/metrics.erb
202
214
  - web/views/metrics_for_job.erb
203
215
  - web/views/morgue.erb
216
+ - web/views/profiles.erb
204
217
  - web/views/queue.erb
205
218
  - web/views/queues.erb
206
219
  - web/views/retries.erb
@@ -217,7 +230,6 @@ metadata:
217
230
  changelog_uri: https://github.com/sidekiq/sidekiq/blob/main/Changes.md
218
231
  source_code_uri: https://github.com/sidekiq/sidekiq
219
232
  rubygems_mfa_required: 'true'
220
- post_install_message:
221
233
  rdoc_options: []
222
234
  require_paths:
223
235
  - lib
@@ -225,15 +237,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
225
237
  requirements:
226
238
  - - ">="
227
239
  - !ruby/object:Gem::Version
228
- version: 2.7.0
240
+ version: 3.2.0
229
241
  required_rubygems_version: !ruby/object:Gem::Requirement
230
242
  requirements:
231
243
  - - ">="
232
244
  - !ruby/object:Gem::Version
233
245
  version: '0'
234
246
  requirements: []
235
- rubygems_version: 3.5.16
236
- signing_key:
247
+ rubygems_version: 3.6.2
237
248
  specification_version: 4
238
249
  summary: Simple, efficient background processing for Ruby
239
250
  test_files: []