sidekiq 2.13.1 → 2.14.0
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.
- data/Changes.md +12 -1
- data/Contributing.md +3 -0
- data/Gemfile +1 -16
- data/Pro-Changes.md +18 -0
- data/lib/sidekiq/api.rb +2 -2
- data/lib/sidekiq/cli.rb +7 -4
- data/lib/sidekiq/client.rb +1 -1
- data/lib/sidekiq/exception_handler.rb +14 -14
- data/lib/sidekiq/middleware/server/retry_jobs.rb +1 -1
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web.rb +31 -24
- data/sidekiq.gemspec +1 -2
- data/web/views/_job_info.erb +76 -0
- data/web/views/_nav.erb +23 -0
- data/web/views/_paging.erb +25 -0
- data/web/views/_status.erb +4 -0
- data/web/views/_summary.erb +26 -0
- data/web/views/_workers.erb +29 -0
- data/web/views/dashboard.erb +59 -0
- data/web/views/index.erb +16 -0
- data/web/views/layout.erb +73 -0
- data/web/views/queue.erb +38 -0
- data/web/views/queues.erb +22 -0
- data/web/views/retries.erb +57 -0
- data/web/views/retry.erb +30 -0
- data/web/views/scheduled.erb +48 -0
- data/web/views/scheduled_job_info.erb +7 -0
- metadata +19 -35
- data/web/views/_job_info.slim +0 -51
- data/web/views/_nav.slim +0 -16
- data/web/views/_paging.slim +0 -15
- data/web/views/_status.slim +0 -3
- data/web/views/_summary.slim +0 -19
- data/web/views/_workers.slim +0 -21
- data/web/views/dashboard.slim +0 -46
- data/web/views/index.slim +0 -10
- data/web/views/layout.slim +0 -50
- data/web/views/queue.slim +0 -27
- data/web/views/queues.slim +0 -15
- data/web/views/retries.slim +0 -41
- data/web/views/retry.slim +0 -21
- data/web/views/scheduled.slim +0 -33
- data/web/views/scheduled_job_info.slim +0 -6
@@ -0,0 +1,73 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%= Sidekiq::NAME %></title>
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
6
|
+
<link href="<%= root_path %>stylesheets/bootstrap.css" media="screen" rel="stylesheet" type="text/css" />
|
7
|
+
<link href="<%= root_path %>stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
|
8
|
+
<script type="text/javascript" src="<%= root_path %>javascripts/application.js"></script>
|
9
|
+
<script type="text/javascript" src="<%= root_path %>javascripts/locales/jquery.timeago.<%= locale %>.js"></script>
|
10
|
+
<% if params[:poll] %>
|
11
|
+
<script>
|
12
|
+
setInterval("window.location.reload(true)", 2000);
|
13
|
+
</script>
|
14
|
+
<% end %>
|
15
|
+
</head>
|
16
|
+
<body class="admin">
|
17
|
+
<div class="navbar navbar-fixed-top">
|
18
|
+
<%= erb :_nav %>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div id="page">
|
22
|
+
<div class="container">
|
23
|
+
<div class="row">
|
24
|
+
<div class="span12 summary_bar">
|
25
|
+
<div class="row">
|
26
|
+
<h4 class="span10">
|
27
|
+
<span class="title"><%= t('Status') %></span>
|
28
|
+
<%= erb :_status %>
|
29
|
+
</h4>
|
30
|
+
<% unless current_path == '' %>
|
31
|
+
<div class="span2 pull-right actions">
|
32
|
+
<% if params[:poll] %>
|
33
|
+
<a id="live-poll" class="btn btn-block btn-primary active" href="<%= root_path %><%= current_path %>"><%= t('StopPolling') %></a>
|
34
|
+
<% else %>
|
35
|
+
<a id="live-poll" class="btn btn-block btn-primary" href="<%= root_path %><%= current_path %>?poll=true"><%= t('LivePoll') %></a>
|
36
|
+
<% end %>
|
37
|
+
</div>
|
38
|
+
<% end %>
|
39
|
+
</div>
|
40
|
+
<%= erb :_summary %>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div class="span12">
|
44
|
+
<%= yield %>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
|
50
|
+
<div class="navbar navbar-fixed-bottom navbar-inverse">
|
51
|
+
<div class="navbar-inner">
|
52
|
+
<div class="container">
|
53
|
+
<ul class="nav">
|
54
|
+
<li>
|
55
|
+
<p class="navbar-text" style="color:white;">Sidekiq v<%= Sidekiq::VERSION %></p>
|
56
|
+
</li>
|
57
|
+
<li>
|
58
|
+
<p class="navbar-text">Redis: <%= location %></p>
|
59
|
+
</li>
|
60
|
+
<li>
|
61
|
+
<p class="navbar-text"><%= t('Time') %>: <%= Time.now.utc.strftime('%H:%M:%S UTC') %></p>
|
62
|
+
</li>
|
63
|
+
<% if namespace %>
|
64
|
+
<li>
|
65
|
+
<p class="navbar-text"><%= t('Namespace') %>: <%= namespace %></p>
|
66
|
+
</li>
|
67
|
+
<% end %>
|
68
|
+
</ul>
|
69
|
+
</div>
|
70
|
+
</div>
|
71
|
+
</div>
|
72
|
+
</body>
|
73
|
+
</html>
|
data/web/views/queue.erb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
<header class="row">
|
2
|
+
<div class="span5">
|
3
|
+
<h3>
|
4
|
+
<%= t('CurrentMessagesInQueue', :queue => @name) %>
|
5
|
+
</h3>
|
6
|
+
</div>
|
7
|
+
<div class="span4 pull-right">
|
8
|
+
<%= erb :_paging, :locals => { :url => "#{root_path}queues/#{@name}" } %>
|
9
|
+
</div>
|
10
|
+
</header>
|
11
|
+
<table class="queue table table-hover table-bordered table-striped">
|
12
|
+
<thead>
|
13
|
+
<th><%= t('Class') %></th>
|
14
|
+
<th><%= t('Arguments') %></th>
|
15
|
+
<th></th>
|
16
|
+
</thead>
|
17
|
+
<% @messages.each_with_index do |msg, index| %>
|
18
|
+
<tr>
|
19
|
+
<td><%= msg['class'] %></td>
|
20
|
+
<td>
|
21
|
+
<% if msg['args'] and msg['args'].to_s.size > 100 %>
|
22
|
+
<%= msg['args'].inspect[0..100] + "... " %>
|
23
|
+
<button data-toggle="collapse" data-target="#worker_<%= index %>" class="btn btn-mini"><%= t('ShowAll') %></button>
|
24
|
+
<div class="toggle" id="worker_<%= index %>" style="display: none;"><%= msg['args'] %></div>
|
25
|
+
<% else %>
|
26
|
+
<%= msg['args'] %>
|
27
|
+
<% end %>
|
28
|
+
</td>
|
29
|
+
<td>
|
30
|
+
<form action="<%= root_path %>queues/<%= @name %>/delete" method="post">
|
31
|
+
<input name="key_val" value="<%= h Sidekiq.dump_json(msg) %>" type="hidden" />
|
32
|
+
<input class="btn btn-danger btn-mini" type="submit" name="delete" value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSure') %>" />
|
33
|
+
</form>
|
34
|
+
</td>
|
35
|
+
</tr>
|
36
|
+
<% end %>
|
37
|
+
</table>
|
38
|
+
<%= erb :_paging, :locals => { :url => "#{root_path}queues/#{@name}" } %>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<h3><%= t('Queues') %></h3>
|
2
|
+
|
3
|
+
<table class="queues table table-hover table-bordered table-striped table-white">
|
4
|
+
<thead>
|
5
|
+
<th><%= t('Queue') %></th>
|
6
|
+
<th><%= t('Size') %></th>
|
7
|
+
<th><%= t('Actions') %></th>
|
8
|
+
</thead>
|
9
|
+
<% @queues.each do |queue| %>
|
10
|
+
<tr>
|
11
|
+
<td>
|
12
|
+
<a href="<%= root_path %>queues/<%= queue.name %>"><%= queue.name %></a>
|
13
|
+
</td>
|
14
|
+
<td><%= number_with_delimiter(queue.size) %> </td>
|
15
|
+
<td width="20%">
|
16
|
+
<form action="<%=root_path %>queues/<%= queue.name %>" method="post">
|
17
|
+
<input class="btn btn-danger btn-small" type="submit" name="delete" value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSureDeleteQueue', :queue => queue.name) %>" />
|
18
|
+
</form>
|
19
|
+
</td>
|
20
|
+
</tr>
|
21
|
+
<% end %>
|
22
|
+
</table>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<header class="row">
|
2
|
+
<div class="span5">
|
3
|
+
<h3><%= t('Retries') %></h3>
|
4
|
+
</div>
|
5
|
+
<div class="span4">
|
6
|
+
<% if @retries.size > 0 %>
|
7
|
+
<%= erb :_paging, :locals => { :url => "#{root_path}retries" } %>
|
8
|
+
<% end %>
|
9
|
+
</div>
|
10
|
+
</header>
|
11
|
+
|
12
|
+
<% if @retries.size > 0 %>
|
13
|
+
<form action="<%= root_path %>retries" method="post">
|
14
|
+
<table class="table table-striped table-bordered table-white">
|
15
|
+
<tr>
|
16
|
+
<th width="20px">
|
17
|
+
<input type="checkbox" class="check_all" />
|
18
|
+
</th>
|
19
|
+
<th width="25%"><%= t('NextRetry') %></th>
|
20
|
+
<th width="11%"><%= t('RetryCount') %></th>
|
21
|
+
<th><%= t('Queue') %></th>
|
22
|
+
<th><%= t('Worker') %></th>
|
23
|
+
<th><%= t('Arguments') %></th>
|
24
|
+
</tr>
|
25
|
+
<% @retries.each do |msg, score| %>
|
26
|
+
<tr>
|
27
|
+
<td>
|
28
|
+
<input type='checkbox' name='key[]' value='<%= job_params(msg, score) %>' />
|
29
|
+
</td>
|
30
|
+
<td>
|
31
|
+
<a href="<%= root_path %>retries/<%= job_params(msg, score) %>"><%= relative_time(Time.at(score)) %></a>
|
32
|
+
</td>
|
33
|
+
<td><%= msg['retry_count'] %></td>
|
34
|
+
<td>
|
35
|
+
<a href="<%= root_path %>queues/<%= msg['queue'] %>"><%= msg['queue'] %></a>
|
36
|
+
</td>
|
37
|
+
<td><%= msg['class'] %></td>
|
38
|
+
<td>
|
39
|
+
<div class="args"><%= display_args(msg['args']) %></div>
|
40
|
+
</td>
|
41
|
+
</tr>
|
42
|
+
<% end %>
|
43
|
+
</table>
|
44
|
+
<input class="btn btn-primary btn-small pull-left" type="submit" name="retry" value="<%= t('RetryNow') %>" />
|
45
|
+
<input class="btn btn-danger btn-small pull-left" type="submit" name="delete" value="<%= t('Delete') %>" />
|
46
|
+
</form>
|
47
|
+
|
48
|
+
<form action="<%= root_path %>retries/all/delete" method="post">
|
49
|
+
<input class="btn btn-danger btn-small pull-right" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
50
|
+
</form>
|
51
|
+
<form action="<%= root_path %>retries/all/retry" method="post">
|
52
|
+
<input class="btn btn-danger btn-small pull-right" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
53
|
+
</form>
|
54
|
+
|
55
|
+
<% else %>
|
56
|
+
<div class="alert alert-success"><%= t('NoRetriesFound') %></div>
|
57
|
+
<% end %>
|
data/web/views/retry.erb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
<%= erb :_job_info, :locals => {:job => @retry, :type => :retry} %>
|
2
|
+
|
3
|
+
<h3><%= t('Error') %></h3>
|
4
|
+
<table class="error table table-bordered table-striped">
|
5
|
+
<tbody>
|
6
|
+
<tr>
|
7
|
+
<th><%= t('ErrorClass') %></th>
|
8
|
+
<td>
|
9
|
+
<code><%= @retry['error_class'] %></code>
|
10
|
+
</td>
|
11
|
+
</tr>
|
12
|
+
<tr>
|
13
|
+
<th><%= t('ErrorMessage') %></th>
|
14
|
+
<td><%= @retry['error_message'] %></td>
|
15
|
+
</tr>
|
16
|
+
<% if !@retry['error_backtrace'].nil? %>
|
17
|
+
<tr>
|
18
|
+
<th><%= t('ErrorBacktrace') %></th>
|
19
|
+
<td>
|
20
|
+
<code><%= @retry['error_backtrace'].join("<br/>") %></code>
|
21
|
+
</td>
|
22
|
+
</tr>
|
23
|
+
<% end %>
|
24
|
+
</tbody>
|
25
|
+
</table>
|
26
|
+
<form class="form-horizontal" action="<%= root_path %>retries/<%= job_params(@retry, @retry.score) %>" method="post">
|
27
|
+
<a class="btn" href="<%= root_path %>retries"><%= t('GoBack') %></a>
|
28
|
+
<input class="btn btn-primary" type="submit" name="retry" value="<%= t('RetryNow') %>" />
|
29
|
+
<input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>" />
|
30
|
+
</form>
|
@@ -0,0 +1,48 @@
|
|
1
|
+
<header class="row">
|
2
|
+
<div class="span5">
|
3
|
+
<h3><%= t('ScheduledJobs') %></h3>
|
4
|
+
</div>
|
5
|
+
<div class="span4">
|
6
|
+
<% if @scheduled.size > 0 %>
|
7
|
+
<%= erb :_paging, :locals => { :url => "#{root_path}scheduled" } %>
|
8
|
+
<% end %>
|
9
|
+
</div>
|
10
|
+
</header>
|
11
|
+
|
12
|
+
<% if @scheduled.size > 0 %>
|
13
|
+
|
14
|
+
<form action="<%= root_path %>scheduled" method="post">
|
15
|
+
<table class="table table-striped table-bordered table-white">
|
16
|
+
<thead>
|
17
|
+
<th width="20px">
|
18
|
+
<input type="checkbox" class="check_all" />
|
19
|
+
</th>
|
20
|
+
<th width="25%"><%= t('When') %></th>
|
21
|
+
<th width="10%"><%= t('Queue') %></th>
|
22
|
+
<th><%= t('Worker') %></th>
|
23
|
+
<th><%= t('Arguments') %></th>
|
24
|
+
</thead>
|
25
|
+
<% @scheduled.each do |msg, score| %>
|
26
|
+
<tr>
|
27
|
+
<td>
|
28
|
+
<input type='checkbox' name='key[]' value='<%= job_params(msg, score) %>' />
|
29
|
+
</td>
|
30
|
+
<td>
|
31
|
+
<a href="<%= root_path %>scheduled/<%= job_params(msg, score) %>"><%= relative_time(Time.at(score)) %></a>
|
32
|
+
</td>
|
33
|
+
<td>
|
34
|
+
<a href="<%= root_path %>queues/<%= msg['queue'] %>"><%= msg['queue'] %></a>
|
35
|
+
</td>
|
36
|
+
<td><%= msg['class'] %></td>
|
37
|
+
<td>
|
38
|
+
<div class="args"><%= display_args(msg['args']) %></div>
|
39
|
+
</td>
|
40
|
+
</tr>
|
41
|
+
<% end %>
|
42
|
+
</table>
|
43
|
+
<input class="btn btn-danger pull-right" type="submit" name="delete" value="<%= t('Delete') %>" />
|
44
|
+
<input class="btn btn-danger pull-right" type="submit" name="add_to_queue" value="<%= t('AddToQueue') %>" />
|
45
|
+
</form>
|
46
|
+
<% else %>
|
47
|
+
<div class="alert alert-success"><%= t('NoScheduledFound') %></div>
|
48
|
+
<% end %>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<%= erb :_job_info, :locals => {:job => @job, :type => :scheduled} %>
|
2
|
+
|
3
|
+
<form class="form-horizontal" action="<%= root_path %>scheduled/<%= job_params(@job, @job.score) %>" method="post">
|
4
|
+
<a class="btn" href="<%= root_path %>scheduled"><%= t('GoBack') %></a>
|
5
|
+
<input class="btn btn-primary" type="submit" name="add_to_queue" value="<%= t('AddToQueue') %>" />
|
6
|
+
<input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>" />
|
7
|
+
</form>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.14.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: redis
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 3.0.4
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 3.0.4
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: redis-namespace
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,22 +107,6 @@ dependencies:
|
|
107
107
|
- - ! '>='
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0'
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: slim
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
|
-
requirements:
|
115
|
-
- - ! '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 1.1.0
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: 1.1.0
|
126
110
|
- !ruby/object:Gem::Dependency
|
127
111
|
name: minitest
|
128
112
|
requirement: !ruby/object:Gem::Requirement
|
@@ -350,21 +334,21 @@ files:
|
|
350
334
|
- web/locales/pt-br.yml
|
351
335
|
- web/locales/pt.yml
|
352
336
|
- web/locales/ru.yml
|
353
|
-
- web/views/_job_info.
|
354
|
-
- web/views/_nav.
|
355
|
-
- web/views/_paging.
|
356
|
-
- web/views/_status.
|
357
|
-
- web/views/_summary.
|
358
|
-
- web/views/_workers.
|
359
|
-
- web/views/dashboard.
|
360
|
-
- web/views/index.
|
361
|
-
- web/views/layout.
|
362
|
-
- web/views/queue.
|
363
|
-
- web/views/queues.
|
364
|
-
- web/views/retries.
|
365
|
-
- web/views/retry.
|
366
|
-
- web/views/scheduled.
|
367
|
-
- web/views/scheduled_job_info.
|
337
|
+
- web/views/_job_info.erb
|
338
|
+
- web/views/_nav.erb
|
339
|
+
- web/views/_paging.erb
|
340
|
+
- web/views/_status.erb
|
341
|
+
- web/views/_summary.erb
|
342
|
+
- web/views/_workers.erb
|
343
|
+
- web/views/dashboard.erb
|
344
|
+
- web/views/index.erb
|
345
|
+
- web/views/layout.erb
|
346
|
+
- web/views/queue.erb
|
347
|
+
- web/views/queues.erb
|
348
|
+
- web/views/retries.erb
|
349
|
+
- web/views/retry.erb
|
350
|
+
- web/views/scheduled.erb
|
351
|
+
- web/views/scheduled_job_info.erb
|
368
352
|
homepage: http://sidekiq.org
|
369
353
|
licenses:
|
370
354
|
- LGPL-3.0
|
data/web/views/_job_info.slim
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
header
|
2
|
-
h3 = t('Job')
|
3
|
-
|
4
|
-
table class="table table-bordered table-striped"
|
5
|
-
tbody
|
6
|
-
tr
|
7
|
-
th = t('Queue')
|
8
|
-
td
|
9
|
-
a href="#{root_path}queues/#{job['queue']}" #{job['queue']}
|
10
|
-
tr
|
11
|
-
th = t('Class')
|
12
|
-
td
|
13
|
-
code= job['class']
|
14
|
-
tr
|
15
|
-
th = t('Arguments')
|
16
|
-
td
|
17
|
-
code
|
18
|
-
// We don't want to truncate any job arguments when viewing a single job's status page
|
19
|
-
div.args-extended=display_args(job['args'], nil)
|
20
|
-
tr
|
21
|
-
th JID
|
22
|
-
td
|
23
|
-
code= job.jid
|
24
|
-
tr
|
25
|
-
th = t('Enqueued')
|
26
|
-
td== relative_time(job.enqueued_at)
|
27
|
-
- unless retry_extra_items(job).empty?
|
28
|
-
tr
|
29
|
-
th = t('Extras')
|
30
|
-
td
|
31
|
-
code
|
32
|
-
= retry_extra_items(job).inspect
|
33
|
-
- if type == :retry
|
34
|
-
- if job['retry_count'] && job['retry_count'] > 0
|
35
|
-
tr
|
36
|
-
th = t('RetryCount')
|
37
|
-
td= job['retry_count']
|
38
|
-
tr
|
39
|
-
th = t('LastRetry')
|
40
|
-
td== relative_time(job['retried_at'].is_a?(Numeric) ? Time.at(job['retried_at']) : Time.parse(job['retried_at']))
|
41
|
-
- else
|
42
|
-
tr
|
43
|
-
th = t('OriginallyFailed')
|
44
|
-
td== relative_time(job['failed_at'].is_a?(Numeric) ? Time.at(job['failed_at']) : Time.parse(job['failed_at']))
|
45
|
-
tr
|
46
|
-
th = t('NextRetry')
|
47
|
-
td== relative_time(job.at)
|
48
|
-
- if type == :scheduled
|
49
|
-
tr
|
50
|
-
th = t('Scheduled')
|
51
|
-
td== relative_time(job.at)
|
data/web/views/_nav.slim
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
.navbar-inner
|
2
|
-
.container
|
3
|
-
a.brand href='#{{root_path}}'
|
4
|
-
= Sidekiq::NAME
|
5
|
-
ul.nav
|
6
|
-
- tabs.each do |title, url|
|
7
|
-
- if url == ''
|
8
|
-
li class="#{current_path == url ? 'active' : ''}"
|
9
|
-
a href="#{{root_path}}#{{url}}" = t(title)
|
10
|
-
- else
|
11
|
-
li class="#{current_path.start_with?(url) ? 'active' : ''}"
|
12
|
-
a href="#{{root_path}}#{{url}}" = t(title)
|
13
|
-
|
14
|
-
- custom_tabs.each do |title, url|
|
15
|
-
li class="#{current_path.start_with?(url) ? 'active' : ''}"
|
16
|
-
a href="#{{root_path}}#{{url}}" = t(title)
|
data/web/views/_paging.slim
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
- if @total_size > @count
|
2
|
-
.pagination.pagination-right
|
3
|
-
ul
|
4
|
-
li class="#{'disabled' if @current_page == 1}"
|
5
|
-
a href="#{url}?page=1" «
|
6
|
-
- if @current_page > 1
|
7
|
-
li
|
8
|
-
a href="#{url}?page=#{@current_page - 1}" #{@current_page - 1}
|
9
|
-
li.disabled
|
10
|
-
a href="#{url}?page=#{@current_page}" #{@current_page}
|
11
|
-
- if @total_size > @current_page * @count
|
12
|
-
li
|
13
|
-
a href="#{url}?page=#{@current_page + 1}" #{@current_page + 1}
|
14
|
-
li class="#{'disabled' if @total_size <= @current_page * @count}"
|
15
|
-
a href="#{url}?page=#{(@total_size.to_f / @count).ceil}" »
|
data/web/views/_status.slim
DELETED
data/web/views/_summary.slim
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
ul.unstyled.summary.row
|
2
|
-
li.processed.span2
|
3
|
-
span.count #{number_with_delimiter(stats.processed)}
|
4
|
-
span.desc = t('Processed')
|
5
|
-
li.failed.span2
|
6
|
-
span.count #{number_with_delimiter(stats.failed)}
|
7
|
-
span.desc = t('Failed')
|
8
|
-
li.busy.span2
|
9
|
-
span.count #{number_with_delimiter(workers_size)}
|
10
|
-
span.desc = t('Busy')
|
11
|
-
li.scheduled.span2
|
12
|
-
span.count #{number_with_delimiter(stats.scheduled_size)}
|
13
|
-
span.desc = t('Scheduled')
|
14
|
-
li.retries.span2
|
15
|
-
span.count #{number_with_delimiter(stats.retry_size)}
|
16
|
-
span.desc = t('Retries')
|
17
|
-
li.enqueued.span2
|
18
|
-
span.count #{number_with_delimiter(stats.enqueued)}
|
19
|
-
span.desc = t('Enqueued')
|
data/web/views/_workers.slim
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
table class="workers table table-hover table-bordered table-striped table-white"
|
2
|
-
thead
|
3
|
-
th = t('Worker')
|
4
|
-
th = t('Queue')
|
5
|
-
th = t('Class')
|
6
|
-
th = t('Arguments')
|
7
|
-
th = t('Started')
|
8
|
-
- workers.each_with_index do |(worker, msg), index|
|
9
|
-
tr
|
10
|
-
td= worker
|
11
|
-
td
|
12
|
-
a href="#{root_path}queues/#{msg['queue']}" = msg['queue']
|
13
|
-
td= msg['payload']['class']
|
14
|
-
td
|
15
|
-
- if msg['payload']['args'].to_s.size > 100
|
16
|
-
= msg['payload']['args'].inspect[0..100] + "... "
|
17
|
-
button data-toggle="collapse" data-target="#worker_#{index}" class="btn btn-mini" = t('ShowAll')
|
18
|
-
.toggle[id="worker_#{index}" style="display: none;max-width: 750px;"]= msg['payload']['args']
|
19
|
-
- else
|
20
|
-
= msg['payload']['args']
|
21
|
-
td== relative_time(msg['run_at'].is_a?(Numeric) ? Time.at(msg['run_at']) : Time.parse(msg['run_at']))
|
data/web/views/dashboard.slim
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
script type="text/javascript" src="#{{root_path}}javascripts/dashboard.js"
|
2
|
-
|
3
|
-
h3
|
4
|
-
= t('Dashboard')
|
5
|
-
span.beacon
|
6
|
-
.ring
|
7
|
-
.dot
|
8
|
-
|
9
|
-
h5 = t('Realtime')
|
10
|
-
#realtime
|
11
|
-
|
12
|
-
h5
|
13
|
-
span.history-heading = t('History')
|
14
|
-
a href="#{{root_path}}?days=7" class="history-graph #{{"active" if params[:days] == "7"}}" = t('OneWeek')
|
15
|
-
a href="#{{root_path}}" class="history-graph #{{"active" if params[:days].nil? || params[:days] == "30"}}" = t('OneMonth')
|
16
|
-
a href="#{{root_path}}?days=90" class="history-graph #{{"active" if params[:days] == "90"}}" = t('ThreeMonths')
|
17
|
-
a href="#{{root_path}}?days=180" class="history-graph #{{"active" if params[:days] == "180"}}" = t('SixMonths')
|
18
|
-
#history data-processed="#{Sidekiq.dump_json(@processed_history)}" data-failed="#{Sidekiq.dump_json(@failed_history)}" data-update-url="#{{root_path}}dashboard/stats"
|
19
|
-
|
20
|
-
br
|
21
|
-
h5 Redis
|
22
|
-
|
23
|
-
- if @redis_info.fetch("redis_version", nil)
|
24
|
-
.stat
|
25
|
-
h3.redis_version= @redis_info.fetch("redis_version")
|
26
|
-
p = t('Version')
|
27
|
-
|
28
|
-
- if @redis_info.fetch("uptime_in_days", nil)
|
29
|
-
.stat
|
30
|
-
h3.uptime_in_days= @redis_info.fetch("uptime_in_days")
|
31
|
-
p = t('Uptime')
|
32
|
-
|
33
|
-
- if @redis_info.fetch("connected_clients", nil)
|
34
|
-
.stat
|
35
|
-
h3.connected_clients= @redis_info.fetch("connected_clients")
|
36
|
-
p = t('Connections')
|
37
|
-
|
38
|
-
- if @redis_info.fetch("used_memory_human", nil)
|
39
|
-
.stat
|
40
|
-
h3.used_memory_human= @redis_info.fetch("used_memory_human")
|
41
|
-
p = t('MemoryUsage')
|
42
|
-
|
43
|
-
- if @redis_info.fetch("used_memory_peak_human", nil)
|
44
|
-
.stat
|
45
|
-
h3.used_memory_peak_human= @redis_info.fetch("used_memory_peak_human")
|
46
|
-
p = t('PeakMemoryUsage')
|
data/web/views/index.slim
DELETED
data/web/views/layout.slim
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
doctype html
|
2
|
-
html
|
3
|
-
head
|
4
|
-
title= Sidekiq::NAME
|
5
|
-
meta name="viewport" content="width=device-width,initial-scale=1.0"
|
6
|
-
link href='#{{root_path}}stylesheets/bootstrap.css' media='screen' rel='stylesheet' type='text/css'
|
7
|
-
link href='#{{root_path}}stylesheets/application.css' media='screen' rel='stylesheet' type='text/css'
|
8
|
-
script type="text/javascript" src="#{{root_path}}javascripts/application.js"
|
9
|
-
script type="text/javascript" src="#{{root_path}}javascripts/locales/jquery.timeago.#{locale}.js"
|
10
|
-
|
11
|
-
- if params[:poll]
|
12
|
-
javascript:
|
13
|
-
setInterval("window.location.reload(true)", 2000);
|
14
|
-
|
15
|
-
body.admin
|
16
|
-
.navbar.navbar-fixed-top
|
17
|
-
==slim :_nav
|
18
|
-
|
19
|
-
#page
|
20
|
-
.container
|
21
|
-
.row
|
22
|
-
.span12.summary_bar
|
23
|
-
.row
|
24
|
-
h4.span10
|
25
|
-
span.title = t('Status')
|
26
|
-
== slim :_status
|
27
|
-
- unless current_path == ''
|
28
|
-
.span2.pull-right.actions
|
29
|
-
- if params[:poll]
|
30
|
-
a#live-poll.btn.btn-block.btn-primary.active href='#{{root_path}}#{{current_path}}' = t('StopPolling')
|
31
|
-
- else
|
32
|
-
a#live-poll.btn.btn-block.btn-primary href='#{{root_path}}#{{current_path}}?poll=true' = t('LivePoll')
|
33
|
-
== slim :_summary
|
34
|
-
|
35
|
-
.span12
|
36
|
-
== yield
|
37
|
-
|
38
|
-
.navbar.navbar-fixed-bottom.navbar-inverse
|
39
|
-
.navbar-inner
|
40
|
-
.container
|
41
|
-
ul.nav
|
42
|
-
li
|
43
|
-
p.navbar-text style="color:white;" Sidekiq v#{Sidekiq::VERSION}
|
44
|
-
li
|
45
|
-
p.navbar-text Redis: #{location}
|
46
|
-
li
|
47
|
-
p.navbar-text #{t('Time')}: #{Time.now.utc.strftime('%H:%M:%S UTC')}
|
48
|
-
- if namespace
|
49
|
-
li
|
50
|
-
p.navbar-text #{t('Namespace')}: #{namespace}
|
data/web/views/queue.slim
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
header.row
|
2
|
-
.span5
|
3
|
-
h3
|
4
|
-
== t('CurrentMessagesInQueue', :queue => @name)
|
5
|
-
.span4.pull-right
|
6
|
-
== slim :_paging, :locals => { :url => "#{root_path}queues/#{@name}" }
|
7
|
-
|
8
|
-
table class="queue table table-hover table-bordered table-striped"
|
9
|
-
thead
|
10
|
-
th = t('Class')
|
11
|
-
th = t('Arguments')
|
12
|
-
th
|
13
|
-
- @messages.each_with_index do |msg, index|
|
14
|
-
tr
|
15
|
-
td= msg['class']
|
16
|
-
td
|
17
|
-
- if msg['args'] and msg['args'].to_s.size > 100
|
18
|
-
= msg['args'].inspect[0..100] + "... "
|
19
|
-
button data-toggle="collapse" data-target="#worker_#{index}" class="btn btn-mini" = t('ShowAll')
|
20
|
-
.toggle[id="worker_#{index}" style="display: none;"]= msg['args']
|
21
|
-
- else
|
22
|
-
= msg['args']
|
23
|
-
td
|
24
|
-
form action="#{root_path}queues/#{@name}/delete" method="post"
|
25
|
-
input name="key_val" value="#{Sidekiq.dump_json(msg)}" type="hidden"
|
26
|
-
input.btn.btn-danger.btn-mini type="submit" name="delete" value="#{t('Delete')}" data-confirm="#{t('AreYouSure')}"
|
27
|
-
== slim :_paging, :locals => { :url => "#{root_path}queues/#{@name}" }
|