sidekiq 6.1.2 → 6.2.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sidekiq might be problematic. Click here for more details.

Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +59 -1
  3. data/LICENSE +1 -1
  4. data/lib/sidekiq/api.rb +95 -57
  5. data/lib/sidekiq/cli.rb +14 -1
  6. data/lib/sidekiq/client.rb +1 -5
  7. data/lib/sidekiq/extensions/generic_proxy.rb +3 -1
  8. data/lib/sidekiq/fetch.rb +9 -1
  9. data/lib/sidekiq/job.rb +8 -0
  10. data/lib/sidekiq/job_logger.rb +1 -1
  11. data/lib/sidekiq/job_retry.rb +4 -7
  12. data/lib/sidekiq/launcher.rb +71 -18
  13. data/lib/sidekiq/logger.rb +3 -2
  14. data/lib/sidekiq/middleware/chain.rb +5 -3
  15. data/lib/sidekiq/scheduled.rb +7 -1
  16. data/lib/sidekiq/testing.rb +1 -3
  17. data/lib/sidekiq/util.rb +28 -0
  18. data/lib/sidekiq/version.rb +1 -1
  19. data/lib/sidekiq/web/action.rb +2 -2
  20. data/lib/sidekiq/web/application.rb +14 -6
  21. data/lib/sidekiq/web/csrf_protection.rb +28 -6
  22. data/lib/sidekiq/web/helpers.rb +31 -11
  23. data/lib/sidekiq/web/router.rb +4 -1
  24. data/lib/sidekiq/web.rb +34 -78
  25. data/sidekiq.gemspec +10 -2
  26. data/web/assets/images/apple-touch-icon.png +0 -0
  27. data/web/assets/stylesheets/application-dark.css +18 -14
  28. data/web/assets/stylesheets/application.css +29 -130
  29. data/web/locales/ar.yml +8 -2
  30. data/web/locales/en.yml +3 -0
  31. data/web/locales/es.yml +18 -2
  32. data/web/locales/fr.yml +8 -1
  33. data/web/locales/ja.yml +3 -0
  34. data/web/locales/lt.yml +1 -1
  35. data/web/views/_job_info.erb +1 -1
  36. data/web/views/busy.erb +48 -17
  37. data/web/views/dashboard.erb +14 -6
  38. data/web/views/dead.erb +1 -1
  39. data/web/views/layout.erb +1 -0
  40. data/web/views/morgue.erb +6 -6
  41. data/web/views/queue.erb +1 -1
  42. data/web/views/queues.erb +3 -3
  43. data/web/views/retries.erb +7 -7
  44. data/web/views/retry.erb +1 -1
  45. data/web/views/scheduled.erb +1 -1
  46. metadata +12 -26
  47. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -20
  48. data/.github/contributing.md +0 -32
  49. data/.github/workflows/ci.yml +0 -41
  50. data/.gitignore +0 -13
  51. data/.standard.yml +0 -20
  52. data/3.0-Upgrade.md +0 -70
  53. data/4.0-Upgrade.md +0 -53
  54. data/5.0-Upgrade.md +0 -56
  55. data/6.0-Upgrade.md +0 -72
  56. data/COMM-LICENSE +0 -97
  57. data/Ent-2.0-Upgrade.md +0 -37
  58. data/Ent-Changes.md +0 -281
  59. data/Gemfile +0 -24
  60. data/Gemfile.lock +0 -192
  61. data/Pro-2.0-Upgrade.md +0 -138
  62. data/Pro-3.0-Upgrade.md +0 -44
  63. data/Pro-4.0-Upgrade.md +0 -35
  64. data/Pro-5.0-Upgrade.md +0 -25
  65. data/Pro-Changes.md +0 -805
  66. data/Rakefile +0 -10
  67. data/code_of_conduct.md +0 -50
data/web/locales/ar.yml CHANGED
@@ -8,6 +8,7 @@ ar:
8
8
  Realtime: الزمن الفعلي
9
9
  History: تاريخ
10
10
  Busy: مشغول
11
+ Utilization: الاستخدام
11
12
  Processed: تمت المعالجة
12
13
  Failed: فشل
13
14
  Scheduled: مجدول
@@ -65,11 +66,13 @@ ar:
65
66
  DeadJobs: وظائف ميتة
66
67
  NoDeadJobsFound: لاتوجد وظائف ميتة
67
68
  Dead: ميتة
69
+ Process: عملية
68
70
  Processes: عمليات
71
+ Name: الاسم
69
72
  Thread: نيسب
70
73
  Threads: نياسب
71
74
  Jobs: وظائف
72
- Paused: إيقاف مؤقت
75
+ Paused: موقفة مؤقتاً
73
76
  Stop: إيقاف
74
77
  Quiet: هدوء
75
78
  StopAll: إيقاف الكل
@@ -78,4 +81,7 @@ ar:
78
81
  Plugins: الإضافات
79
82
  NotYetEnqueued: لم تدخل الرتل بعد
80
83
  CreatedAt: أنشئت في
81
- BackToApp: العودة إلى التطبيق
84
+ BackToApp: العودة إلى التطبيق
85
+ Latency: زمن الانتظار
86
+ Pause: إيقاف مؤقت
87
+ Unpause: متابعة
data/web/locales/en.yml CHANGED
@@ -7,6 +7,7 @@ en: # <---- change this to your locale code
7
7
  Realtime: Real-time
8
8
  History: History
9
9
  Busy: Busy
10
+ Utilization: Utilization
10
11
  Processed: Processed
11
12
  Failed: Failed
12
13
  Scheduled: Scheduled
@@ -64,7 +65,9 @@ en: # <---- change this to your locale code
64
65
  DeadJobs: Dead Jobs
65
66
  NoDeadJobsFound: No dead jobs were found
66
67
  Dead: Dead
68
+ Process: Process
67
69
  Processes: Processes
70
+ Name: Name
68
71
  Thread: Thread
69
72
  Threads: Threads
70
73
  Jobs: Jobs
data/web/locales/es.yml CHANGED
@@ -7,6 +7,7 @@ es:
7
7
  Realtime: Tiempo Real
8
8
  History: Historial
9
9
  Busy: Ocupado
10
+ Utilization: Utilización
10
11
  Processed: Procesadas
11
12
  Failed: Fallidas
12
13
  Scheduled: Programadas
@@ -24,9 +25,9 @@ es:
24
25
  ShowAll: Mostrar Todo
25
26
  CurrentMessagesInQueue: Mensajes actualmente en <span class='title'>%{queue}</span>
26
27
  Delete: Eliminar
27
- AddToQueue: Añadir a fila
28
+ AddToQueue: Añadir a la cola
28
29
  AreYouSureDeleteJob: ¿Estás seguro de eliminar este trabajo?
29
- AreYouSureDeleteQueue: ¿Estás seguro de eliminar la fila %{queue}?
30
+ AreYouSureDeleteQueue: ¿Estás seguro de eliminar la cola %{queue}?
30
31
  Queues: Colas
31
32
  Size: Tamaño
32
33
  Actions: Acciones
@@ -39,6 +40,7 @@ es:
39
40
  AreYouSure: ¿Estás seguro?
40
41
  DeleteAll: Borrar Todo
41
42
  RetryAll: Reintentar Todo
43
+ KillAll: Matar Todo
42
44
  NoRetriesFound: No se encontraron reintentos
43
45
  Error: Error
44
46
  ErrorClass: Clase del Error
@@ -63,8 +65,22 @@ es:
63
65
  DeadJobs: Trabajos muertos
64
66
  NoDeadJobsFound: No hay trabajos muertos
65
67
  Dead: Muerto
68
+ Process: Proceso
66
69
  Processes: Procesos
70
+ Name: Nombre
67
71
  Thread: Hilo
68
72
  Threads: Hilos
69
73
  Jobs: Trabajos
74
+ Paused: Pausado
75
+ Stop: Detener
76
+ Quiet: Silenciar
77
+ StopAll: Detener Todo
78
+ QuietAll: Silenciar Todo
79
+ PollingInterval: Intervalo de Sondeo
80
+ Plugins: Plugins
81
+ NotYetEnqueued: Aún no en cola
82
+ CreatedAt: Creado en
83
+ BackToApp: Volver a la Aplicación
70
84
  Latency: Latencia
85
+ Pause: Pausar
86
+ Unpause: Reanudar
data/web/locales/fr.yml CHANGED
@@ -7,6 +7,7 @@ fr:
7
7
  Realtime: Temps réel
8
8
  History: Historique
9
9
  Busy: En cours
10
+ Utilization: Utilisation
10
11
  Processed: Traitées
11
12
  Failed: Échouées
12
13
  Scheduled: Planifiées
@@ -39,6 +40,7 @@ fr:
39
40
  AreYouSure: Êtes-vous certain ?
40
41
  DeleteAll: Tout supprimer
41
42
  RetryAll: Tout réessayer
43
+ KillAll: Tout tuer
42
44
  NoRetriesFound: Aucune tâche à réessayer n’a été trouvée
43
45
  Error: Erreur
44
46
  ErrorClass: Classe d’erreur
@@ -63,6 +65,7 @@ fr:
63
65
  DeadJobs: Tâches mortes
64
66
  NoDeadJobsFound: Aucune tâche morte n'a été trouvée
65
67
  Dead: Mortes
68
+ Process: Processus
66
69
  Processes: Processus
67
70
  Thread: Thread
68
71
  Threads: Threads
@@ -72,7 +75,11 @@ fr:
72
75
  Quiet: Clore
73
76
  StopAll: Tout arrêter
74
77
  QuietAll: Tout clore
75
- PollingInterval: Interval de rafraîchissement
78
+ PollingInterval: Intervalle de rafraîchissement
76
79
  Plugins: Plugins
77
80
  NotYetEnqueued: Pas encore en file d'attente
78
81
  CreatedAt: Créée le
82
+ Back to App: Retour à l'application
83
+ Latency: Latence
84
+ Pause: Pause
85
+ Unpause: Unpause
data/web/locales/ja.yml CHANGED
@@ -7,6 +7,7 @@ ja:
7
7
  Realtime: リアルタイム
8
8
  History: 履歴
9
9
  Busy: 実行中
10
+ Utilization: 使用率
10
11
  Processed: 完了
11
12
  Failed: 失敗
12
13
  Scheduled: 予定
@@ -64,7 +65,9 @@ ja:
64
65
  DeadJobs: デッドジョブ
65
66
  NoDeadJobsFound: デッドジョブはありません
66
67
  Dead: デッド
68
+ Process: プロセス
67
69
  Processes: プロセス
70
+ Name: 名前
68
71
  Thread: スレッド
69
72
  Threads: スレッド
70
73
  Jobs: ジョブ
data/web/locales/lt.yml CHANGED
@@ -71,7 +71,7 @@ lt:
71
71
  Paused: Pristabdytas
72
72
  Stop: Sustabdyti
73
73
  Quiet: Nutildyti
74
- StopAll: Sustbadyti Visus
74
+ StopAll: Sustabdyti Visus
75
75
  QuietAll: Nutildyti Visus
76
76
  PollingInterval: Užklausimų intervalas
77
77
  Plugins: Įskiepiai
@@ -3,7 +3,7 @@
3
3
  </header>
4
4
 
5
5
  <div class="table_container">
6
- <table class="table table-bordered table-striped">
6
+ <table class="table table-bordered table-striped table-hover">
7
7
  <tbody>
8
8
  <tr>
9
9
  <th><%= t('Queue') %></th>
data/web/views/busy.erb CHANGED
@@ -1,8 +1,39 @@
1
1
  <div class="row header">
2
- <div class="col-sm-8 pull-left flip">
2
+ <div class="col-sm-4 pull-left flip">
3
+ <h3><%= t('Status') %></h3>
4
+ </div>
5
+ </div>
6
+
7
+ <div class="stats-wrapper">
8
+ <div class="stats-container">
9
+ <div class="stat">
10
+ <h3><%= s = processes.size; number_with_delimiter(s) %></h3>
11
+ <p><%= t('Processes') %></p>
12
+ </div>
13
+ <div class="stat">
14
+ <h3><%= x = processes.total_concurrency; number_with_delimiter(x) %></h3>
15
+ <p><%= t('Threads') %></p>
16
+ </div>
17
+ <div class="stat">
18
+ <h3><%= ws = workers.size; number_with_delimiter(ws) %></h3>
19
+ <p><%= t('Busy') %></p>
20
+ </div>
21
+ <div class="stat">
22
+ <h3><%= x == 0 ? 0 : ((ws / x.to_f) * 100).round(0) %>%</h3>
23
+ <p><%= t('Utilization') %></p>
24
+ </div>
25
+ <div class="stat">
26
+ <h3><%= format_memory(processes.total_rss) %></h3>
27
+ <p><%= t('RSS') %></p>
28
+ </div>
29
+ </div>
30
+ </div>
31
+
32
+ <div class="row header">
33
+ <div class="col-sm-4 pull-left flip">
3
34
  <h3><%= t('Processes') %></h3>
4
35
  </div>
5
- <div class="col-sm-4 pull-right flip">
36
+ <div class="col-sm-3 pull-right flip">
6
37
  <form method="POST" class="warning-messages">
7
38
  <%= csrf_tag %>
8
39
  <div class="btn-group pull-right flip">
@@ -12,14 +43,14 @@
12
43
  </form>
13
44
  </div>
14
45
  </div>
15
-
16
46
  <div class="table_container">
17
47
  <table class="processes table table-hover table-bordered table-striped">
18
48
  <thead>
19
49
  <th><%= t('Name') %></th>
20
50
  <th><%= t('Started') %></th>
21
- <th><%= t('Threads') %></th>
22
- <th><%= t('Busy') %></th>
51
+ <th class="col-sm-1"><%= t('RSS') %><a href="https://github.com/mperham/sidekiq/wiki/Memory#rss"><span class="info-circle" title="Click to learn more about RSS">?</span></a></th>
52
+ <th class="col-sm-1"><%= t('Threads') %></th>
53
+ <th class="col-sm-1"><%= t('Busy') %></th>
23
54
  <th>&nbsp;</th>
24
55
  </thead>
25
56
  <% lead = processes.leader %>
@@ -39,22 +70,22 @@
39
70
  <% end %>
40
71
  <br>
41
72
  <b><%= "#{t('Queues')}: " %></b>
42
- <%= process['queues'] * ", " %>
73
+ <%= process.queues.join(", ") %>
43
74
  </td>
44
75
  <td><%= relative_time(Time.at(process['started_at'])) %></td>
76
+ <td><%= format_memory(process['rss'].to_i) %></td>
45
77
  <td><%= process['concurrency'] %></td>
46
78
  <td><%= process['busy'] %></td>
47
79
  <td>
48
- <div class="btn-group pull-right flip">
49
- <form method="POST">
50
- <%= csrf_tag %>
51
- <input type="hidden" name="identity" value="<%= process['identity'] %>"/>
52
- <% unless process.stopping? %>
53
- <button class="btn btn-warn" type="submit" name="quiet" value="1"><%= t('Quiet') %></button>
54
- <% end %>
55
- <button class="btn btn-danger" type="submit" name="stop" value="1"><%= t('Stop') %></button>
56
- </form>
57
- </div>
80
+ <form method="POST">
81
+ <%= csrf_tag %>
82
+ <input type="hidden" name="identity" value="<%= process['identity'] %>"/>
83
+
84
+ <div class="btn-group pull-right flip">
85
+ <% unless process.stopping? %><button class="btn btn-xs btn-warn" type="submit" name="quiet" value="1"><%= t('Quiet') %></button><% end %>
86
+ <button class="btn btn-xs btn-danger" type="submit" name="stop" value="1"><%= t('Stop') %></button>
87
+ </div>
88
+ </form>
58
89
  </td>
59
90
  </tr>
60
91
  <% end %>
@@ -79,7 +110,7 @@
79
110
  <th><%= t('Started') %></th>
80
111
  </thead>
81
112
  <% workers.each do |process, thread, msg| %>
82
- <% job = Sidekiq::Job.new(msg['payload']) %>
113
+ <% job = Sidekiq::JobRecord.new(msg['payload']) %>
83
114
  <tr>
84
115
  <td><%= process %></td>
85
116
  <td><%= thread %></td>
@@ -20,22 +20,30 @@
20
20
  <div id="realtime-legend"></div>
21
21
  </div>
22
22
 
23
- <div class="row chart">
24
- <h5>
25
- <span class="history-heading"><%= t('History') %></span>
23
+ <div class="row header">
24
+ <div class="col-sm-4 pull-left flip">
25
+ <h3><%= t('History') %></h3>
26
+ </div>
27
+ </div>
28
+ <div class="row chart">
29
+ <div>
26
30
  <a href="<%= root_path %>?days=7" class="history-graph <%= "active" if params[:days] == "7" %>"><%= t('OneWeek') %></a>
27
31
  <a href="<%= root_path %>" class="history-graph <%= "active" if params[:days].nil? || params[:days] == "30" %>"><%= t('OneMonth') %></a>
28
32
  <a href="<%= root_path %>?days=90" class="history-graph <%= "active" if params[:days] == "90" %>"><%= t('ThreeMonths') %></a>
29
33
  <a href="<%= root_path %>?days=180" class="history-graph <%= "active" if params[:days] == "180" %>"><%= t('SixMonths') %></a>
30
- </h5>
34
+ </div>
31
35
 
32
36
  <div id="history" data-processed-label="<%= t('Processed') %>" data-failed-label="<%= t('Failed') %>" data-processed="<%= h Sidekiq.dump_json(@processed_history) %>" data-failed="<%= h Sidekiq.dump_json(@failed_history) %>" data-update-url="<%= root_path %>stats"></div>
33
37
  <div id="history-legend"></div>
34
38
  </div>
35
39
 
36
40
  <br/>
37
- <h5>Redis</h5>
38
- <div class="redis-wrapper">
41
+ <div class="row header">
42
+ <div class="col-sm-4 pull-left flip">
43
+ <h3>Redis</h3>
44
+ </div>
45
+ </div>
46
+ <div class="stats-wrapper">
39
47
  <div class="stats-container">
40
48
  <% if @redis_info.fetch("redis_version", nil) %>
41
49
  <div class="stat">
data/web/views/dead.erb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  <h3><%= t('Error') %></h3>
4
4
  <div class="table_container">
5
- <table class="error table table-bordered table-striped">
5
+ <table class="error table table-bordered table-striped table-hover">
6
6
  <tbody>
7
7
  <tr>
8
8
  <th><%= t('ErrorClass') %></th>
data/web/views/layout.erb CHANGED
@@ -16,6 +16,7 @@
16
16
  <link href="<%= root_path %>stylesheets/application-rtl.css" media="screen" rel="stylesheet" type="text/css" />
17
17
  <% end %>
18
18
 
19
+ <link rel="apple-touch-icon" href="<%= root_path %>images/apple-touch-icon.png">
19
20
  <link rel="shortcut icon" type="image/ico" href="<%= root_path %>images/favicon.ico" />
20
21
  <script type="text/javascript" src="<%= root_path %>javascripts/application.js"></script>
21
22
  <meta name="google" content="notranslate" />
data/web/views/morgue.erb CHANGED
@@ -14,7 +14,7 @@
14
14
  <form action="<%= root_path %>morgue" method="post">
15
15
  <%= csrf_tag %>
16
16
  <div class="table_container">
17
- <table class="table table-striped table-bordered">
17
+ <table class="table table-striped table-bordered table-hover">
18
18
  <thead>
19
19
  <tr>
20
20
  <th class="table-checkbox checkbox-column">
@@ -44,7 +44,7 @@
44
44
  </td>
45
45
  <td>
46
46
  <%= entry.display_class %>
47
- <%= display_tags(entry, "morgue") %>
47
+ <%= display_tags(entry, "dead") %>
48
48
  </td>
49
49
  <td>
50
50
  <div class="args"><%= display_args(entry.display_args) %></div>
@@ -58,18 +58,18 @@
58
58
  <% end %>
59
59
  </table>
60
60
  </div>
61
- <input class="btn btn-primary btn-xs pull-left flip" type="submit" name="retry" value="<%= t('RetryNow') %>" />
62
- <input class="btn btn-danger btn-xs pull-left flip" type="submit" name="delete" value="<%= t('Delete') %>" />
61
+ <input class="btn btn-primary pull-left flip" type="submit" name="retry" value="<%= t('RetryNow') %>" />
62
+ <input class="btn btn-danger pull-left flip" type="submit" name="delete" value="<%= t('Delete') %>" />
63
63
  </form>
64
64
 
65
65
  <% unfiltered? do %>
66
66
  <form action="<%= root_path %>morgue/all/delete" method="post">
67
67
  <%= csrf_tag %>
68
- <input class="btn btn-danger btn-xs pull-right flip" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
68
+ <input class="btn btn-danger pull-right flip" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
69
69
  </form>
70
70
  <form action="<%= root_path %>morgue/all/retry" method="post">
71
71
  <%= csrf_tag %>
72
- <input class="btn btn-danger btn-xs pull-right flip" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
72
+ <input class="btn btn-danger pull-right flip" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
73
73
  </form>
74
74
  <% end %>
75
75
 
data/web/views/queue.erb CHANGED
@@ -52,4 +52,4 @@
52
52
  <% end %>
53
53
  </table>
54
54
  </div>
55
- <%= erb :_paging, locals: { url: "#{root_path}queues/#{@name}" } %>
55
+ <%= erb :_paging, locals: { url: "#{root_path}queues/#{CGI.escape(@name)}" } %>
data/web/views/queues.erb CHANGED
@@ -21,13 +21,13 @@
21
21
  <td class="delete-confirm">
22
22
  <form action="<%=root_path %>queues/<%= CGI.escape(queue.name) %>" method="post">
23
23
  <%= csrf_tag %>
24
- <input class="btn btn-danger btn-xs" type="submit" name="delete" value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSureDeleteQueue', :queue => h(queue.name)) %>" />
24
+ <input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSureDeleteQueue', :queue => h(queue.name)) %>" />
25
25
 
26
26
  <% if Sidekiq.pro? %>
27
27
  <% if queue.paused? %>
28
- <input class="btn btn-danger btn-xs" type="submit" name="unpause" value="<%= t('Unpause') %>" />
28
+ <input class="btn btn-danger" type="submit" name="unpause" value="<%= t('Unpause') %>" />
29
29
  <% else %>
30
- <input class="btn btn-danger btn-xs" type="submit" name="pause" value="<%= t('Pause') %>" />
30
+ <input class="btn btn-danger" type="submit" name="pause" value="<%= t('Pause') %>" />
31
31
  <% end %>
32
32
  <% end %>
33
33
  </form>
@@ -14,7 +14,7 @@
14
14
  <form action="<%= root_path %>retries" method="post">
15
15
  <%= csrf_tag %>
16
16
  <div class="table_container">
17
- <table class="table table-striped table-bordered">
17
+ <table class="table table-striped table-bordered table-hover">
18
18
  <thead>
19
19
  <tr>
20
20
  <th class="table-checkbox checkbox-column">
@@ -58,23 +58,23 @@
58
58
  <% end %>
59
59
  </table>
60
60
  </div>
61
- <input class="btn btn-primary btn-xs pull-left flip" type="submit" name="retry" value="<%= t('RetryNow') %>" />
62
- <input class="btn btn-danger btn-xs pull-left flip" type="submit" name="delete" value="<%= t('Delete') %>" />
63
- <input class="btn btn-danger btn-xs pull-left flip" type="submit" name="kill" value="<%= t('Kill') %>" />
61
+ <input class="btn btn-primary pull-left flip" type="submit" name="retry" value="<%= t('RetryNow') %>" />
62
+ <input class="btn btn-danger pull-left flip" type="submit" name="delete" value="<%= t('Delete') %>" />
63
+ <input class="btn btn-danger pull-left flip" type="submit" name="kill" value="<%= t('Kill') %>" />
64
64
  </form>
65
65
 
66
66
  <% unfiltered? do %>
67
67
  <form action="<%= root_path %>retries/all/delete" method="post">
68
68
  <%= csrf_tag %>
69
- <input class="btn btn-danger btn-xs pull-right flip" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
69
+ <input class="btn btn-danger pull-right flip" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
70
70
  </form>
71
71
  <form action="<%= root_path %>retries/all/retry" method="post">
72
72
  <%= csrf_tag %>
73
- <input class="btn btn-danger btn-xs pull-right flip" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
73
+ <input class="btn btn-danger pull-right flip" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
74
74
  </form>
75
75
  <form action="<%= root_path %>retries/all/kill" method="post">
76
76
  <%= csrf_tag %>
77
- <input class="btn btn-danger btn-xs pull-right flip" type="submit" name="kill" value="<%= t('KillAll') %>" data-confirm="<%= t('AreYouSure') %>" />
77
+ <input class="btn btn-danger pull-right flip" type="submit" name="kill" value="<%= t('KillAll') %>" data-confirm="<%= t('AreYouSure') %>" />
78
78
  </form>
79
79
  <% end %>
80
80
 
data/web/views/retry.erb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  <h3><%= t('Error') %></h3>
4
4
  <div class="table_container">
5
- <table class="error table table-bordered table-striped">
5
+ <table class="error table table-bordered table-striped table-hover">
6
6
  <tbody>
7
7
  <tr>
8
8
  <th><%= t('ErrorClass') %></th>