sidekiq 7.3.9 → 8.0.1

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 (104) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +44 -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 -5
  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 +40 -2
  12. data/lib/sidekiq/config.rb +18 -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 +13 -4
  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 +8 -1
  27. data/lib/sidekiq/processor.rb +21 -14
  28. data/lib/sidekiq/profiler.rb +59 -0
  29. data/lib/sidekiq/redis_client_adapter.rb +0 -1
  30. data/lib/sidekiq/redis_connection.rb +14 -3
  31. data/lib/sidekiq/testing.rb +2 -2
  32. data/lib/sidekiq/version.rb +2 -2
  33. data/lib/sidekiq/web/action.rb +104 -84
  34. data/lib/sidekiq/web/application.rb +347 -332
  35. data/lib/sidekiq/web/config.rb +117 -0
  36. data/lib/sidekiq/web/helpers.rb +41 -16
  37. data/lib/sidekiq/web/router.rb +60 -76
  38. data/lib/sidekiq/web.rb +50 -156
  39. data/lib/sidekiq.rb +1 -1
  40. data/sidekiq.gemspec +6 -6
  41. data/web/assets/javascripts/application.js +6 -13
  42. data/web/assets/javascripts/base-charts.js +30 -16
  43. data/web/assets/javascripts/chartjs-adapter-date-fns.min.js +7 -0
  44. data/web/assets/javascripts/metrics.js +16 -34
  45. data/web/assets/stylesheets/style.css +750 -0
  46. data/web/locales/ar.yml +1 -0
  47. data/web/locales/cs.yml +1 -0
  48. data/web/locales/da.yml +1 -0
  49. data/web/locales/de.yml +1 -0
  50. data/web/locales/el.yml +1 -0
  51. data/web/locales/en.yml +6 -0
  52. data/web/locales/es.yml +24 -2
  53. data/web/locales/fa.yml +1 -0
  54. data/web/locales/fr.yml +1 -0
  55. data/web/locales/gd.yml +1 -0
  56. data/web/locales/he.yml +1 -0
  57. data/web/locales/hi.yml +1 -0
  58. data/web/locales/it.yml +1 -0
  59. data/web/locales/ja.yml +1 -0
  60. data/web/locales/ko.yml +1 -0
  61. data/web/locales/lt.yml +1 -0
  62. data/web/locales/nb.yml +1 -0
  63. data/web/locales/nl.yml +1 -0
  64. data/web/locales/pl.yml +1 -0
  65. data/web/locales/{pt-br.yml → pt-BR.yml} +2 -1
  66. data/web/locales/pt.yml +1 -0
  67. data/web/locales/ru.yml +1 -0
  68. data/web/locales/sv.yml +1 -0
  69. data/web/locales/ta.yml +1 -0
  70. data/web/locales/tr.yml +1 -0
  71. data/web/locales/uk.yml +1 -0
  72. data/web/locales/ur.yml +1 -0
  73. data/web/locales/vi.yml +1 -0
  74. data/web/locales/{zh-cn.yml → zh-CN.yml} +85 -73
  75. data/web/locales/{zh-tw.yml → zh-TW.yml} +2 -1
  76. data/web/views/_footer.erb +31 -33
  77. data/web/views/_job_info.erb +91 -89
  78. data/web/views/_metrics_period_select.erb +13 -10
  79. data/web/views/_nav.erb +14 -21
  80. data/web/views/_paging.erb +23 -21
  81. data/web/views/_poll_link.erb +2 -2
  82. data/web/views/_summary.erb +16 -16
  83. data/web/views/busy.erb +124 -122
  84. data/web/views/dashboard.erb +62 -66
  85. data/web/views/dead.erb +31 -27
  86. data/web/views/filtering.erb +3 -3
  87. data/web/views/layout.erb +6 -22
  88. data/web/views/metrics.erb +75 -81
  89. data/web/views/metrics_for_job.erb +45 -46
  90. data/web/views/morgue.erb +61 -70
  91. data/web/views/profiles.erb +43 -0
  92. data/web/views/queue.erb +54 -52
  93. data/web/views/queues.erb +43 -41
  94. data/web/views/retries.erb +66 -75
  95. data/web/views/retry.erb +32 -27
  96. data/web/views/scheduled.erb +58 -54
  97. data/web/views/scheduled_job_info.erb +1 -1
  98. metadata +24 -24
  99. data/web/assets/stylesheets/application-dark.css +0 -147
  100. data/web/assets/stylesheets/application-rtl.css +0 -163
  101. data/web/assets/stylesheets/application.css +0 -759
  102. data/web/assets/stylesheets/bootstrap-rtl.min.css +0 -9
  103. data/web/assets/stylesheets/bootstrap.css +0 -5
  104. 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,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.3.9
4
+ version: 8.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-02-14 00:00:00.000000000 Z
10
+ date: 2025-03-06 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: redis-client
@@ -15,70 +15,70 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 0.22.2
18
+ version: 0.23.2
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: 0.22.2
25
+ version: 0.23.2
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: connection_pool
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 2.3.0
32
+ version: 2.5.0
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 2.3.0
39
+ version: 2.5.0
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rack
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 2.2.4
46
+ version: 3.1.0
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 2.2.4
53
+ version: 3.1.0
54
54
  - !ruby/object:Gem::Dependency
55
- name: logger
55
+ name: json
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: '0'
60
+ version: 2.9.0
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: '0'
67
+ version: 2.9.0
68
68
  - !ruby/object:Gem::Dependency
69
- name: base64
69
+ name: logger
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: '0'
74
+ version: 1.6.2
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '0'
81
+ version: 1.6.2
82
82
  description: Simple, efficient background processing for Ruby.
83
83
  email:
84
84
  - info@contribsys.com
@@ -95,6 +95,7 @@ files:
95
95
  - bin/sidekiq
96
96
  - bin/sidekiqload
97
97
  - bin/sidekiqmon
98
+ - bin/webload
98
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
@@ -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
@@ -237,7 +237,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
237
237
  requirements:
238
238
  - - ">="
239
239
  - !ruby/object:Gem::Version
240
- version: 2.7.0
240
+ version: 3.2.0
241
241
  required_rubygems_version: !ruby/object:Gem::Requirement
242
242
  requirements:
243
243
  - - ">="