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.
- checksums.yaml +4 -4
- data/Changes.md +59 -1
- data/LICENSE +1 -1
- data/lib/sidekiq/api.rb +95 -57
- data/lib/sidekiq/cli.rb +14 -1
- data/lib/sidekiq/client.rb +1 -5
- data/lib/sidekiq/extensions/generic_proxy.rb +3 -1
- data/lib/sidekiq/fetch.rb +9 -1
- data/lib/sidekiq/job.rb +8 -0
- data/lib/sidekiq/job_logger.rb +1 -1
- data/lib/sidekiq/job_retry.rb +4 -7
- data/lib/sidekiq/launcher.rb +71 -18
- data/lib/sidekiq/logger.rb +3 -2
- data/lib/sidekiq/middleware/chain.rb +5 -3
- data/lib/sidekiq/scheduled.rb +7 -1
- data/lib/sidekiq/testing.rb +1 -3
- data/lib/sidekiq/util.rb +28 -0
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/action.rb +2 -2
- data/lib/sidekiq/web/application.rb +14 -6
- data/lib/sidekiq/web/csrf_protection.rb +28 -6
- data/lib/sidekiq/web/helpers.rb +31 -11
- data/lib/sidekiq/web/router.rb +4 -1
- data/lib/sidekiq/web.rb +34 -78
- data/sidekiq.gemspec +10 -2
- data/web/assets/images/apple-touch-icon.png +0 -0
- data/web/assets/stylesheets/application-dark.css +18 -14
- data/web/assets/stylesheets/application.css +29 -130
- data/web/locales/ar.yml +8 -2
- data/web/locales/en.yml +3 -0
- data/web/locales/es.yml +18 -2
- data/web/locales/fr.yml +8 -1
- data/web/locales/ja.yml +3 -0
- data/web/locales/lt.yml +1 -1
- data/web/views/_job_info.erb +1 -1
- data/web/views/busy.erb +48 -17
- data/web/views/dashboard.erb +14 -6
- data/web/views/dead.erb +1 -1
- data/web/views/layout.erb +1 -0
- data/web/views/morgue.erb +6 -6
- data/web/views/queue.erb +1 -1
- data/web/views/queues.erb +3 -3
- data/web/views/retries.erb +7 -7
- data/web/views/retry.erb +1 -1
- data/web/views/scheduled.erb +1 -1
- metadata +12 -26
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -20
- data/.github/contributing.md +0 -32
- data/.github/workflows/ci.yml +0 -41
- data/.gitignore +0 -13
- data/.standard.yml +0 -20
- data/3.0-Upgrade.md +0 -70
- data/4.0-Upgrade.md +0 -53
- data/5.0-Upgrade.md +0 -56
- data/6.0-Upgrade.md +0 -72
- data/COMM-LICENSE +0 -97
- data/Ent-2.0-Upgrade.md +0 -37
- data/Ent-Changes.md +0 -281
- data/Gemfile +0 -24
- data/Gemfile.lock +0 -192
- data/Pro-2.0-Upgrade.md +0 -138
- data/Pro-3.0-Upgrade.md +0 -44
- data/Pro-4.0-Upgrade.md +0 -35
- data/Pro-5.0-Upgrade.md +0 -25
- data/Pro-Changes.md +0 -805
- data/Rakefile +0 -10
- 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
|
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
|
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:
|
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
data/web/views/_job_info.erb
CHANGED
data/web/views/busy.erb
CHANGED
@@ -1,8 +1,39 @@
|
|
1
1
|
<div class="row header">
|
2
|
-
<div class="col-sm-
|
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-
|
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('
|
22
|
-
<th><%= t('
|
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> </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
|
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
|
-
<
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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::
|
113
|
+
<% job = Sidekiq::JobRecord.new(msg['payload']) %>
|
83
114
|
<tr>
|
84
115
|
<td><%= process %></td>
|
85
116
|
<td><%= thread %></td>
|
data/web/views/dashboard.erb
CHANGED
@@ -20,22 +20,30 @@
|
|
20
20
|
<div id="realtime-legend"></div>
|
21
21
|
</div>
|
22
22
|
|
23
|
-
<div class="row
|
24
|
-
|
25
|
-
|
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
|
-
</
|
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
|
-
<
|
38
|
-
<div class="
|
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
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, "
|
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
|
62
|
-
<input class="btn btn-danger
|
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
|
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
|
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
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
|
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
|
28
|
+
<input class="btn btn-danger" type="submit" name="unpause" value="<%= t('Unpause') %>" />
|
29
29
|
<% else %>
|
30
|
-
<input class="btn btn-danger
|
30
|
+
<input class="btn btn-danger" type="submit" name="pause" value="<%= t('Pause') %>" />
|
31
31
|
<% end %>
|
32
32
|
<% end %>
|
33
33
|
</form>
|
data/web/views/retries.erb
CHANGED
@@ -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
|
62
|
-
<input class="btn btn-danger
|
63
|
-
<input class="btn btn-danger
|
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
|
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
|
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
|
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