sidekiq 2.13.1 → 2.14.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.
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}" }
|