beanstalkd_view 0.1.8 → 0.1.9
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.
data/README.md
CHANGED
@@ -51,8 +51,9 @@ bundle exec beanstalkd_view
|
|
51
51
|
|
52
52
|
(This will use the vegas gem to launch the Sinatra app on an available port.)
|
53
53
|
|
54
|
-
|
55
|
-
|
54
|
+
Screenshot
|
55
|
+
------------------------
|
56
|
+

|
56
57
|
|
57
58
|
License
|
58
59
|
------------------------
|
@@ -1,22 +1,26 @@
|
|
1
1
|
<!-- Enable Peek Job Button Handlers
|
2
2
|
$(document).ready(function() {
|
3
3
|
if ($("#peek_ready_btn").length > 0) {
|
4
|
-
$("#peek_ready_btn").click(function() {
|
4
|
+
$("#peek_ready_btn").click(function(event) {
|
5
|
+
event.preventDefault();
|
5
6
|
peek('ready');
|
6
7
|
});
|
7
8
|
}
|
8
9
|
if ($("#peek_delayed_btn").length > 0) {
|
9
|
-
$("#peek_delayed_btn").click(function() {
|
10
|
+
$("#peek_delayed_btn").click(function(event) {
|
11
|
+
event.preventDefault();
|
10
12
|
peek('delayed');
|
11
13
|
});
|
12
14
|
}
|
13
15
|
if ($("#peek_buried_btn").length > 0) {
|
14
|
-
$("#peek_buried_btn").click(function() {
|
16
|
+
$("#peek_buried_btn").click(function(event) {
|
17
|
+
event.preventDefault();
|
15
18
|
peek('buried');
|
16
19
|
});
|
17
20
|
}
|
18
21
|
if ($("#add_job_btn").length > 0) {
|
19
|
-
$("#add_job_btn").click(function() {
|
22
|
+
$("#add_job_btn").click(function(event) {
|
23
|
+
event.preventDefault();
|
20
24
|
add_job();
|
21
25
|
});
|
22
26
|
}
|
@@ -8,7 +8,9 @@ module BeanstalkdView
|
|
8
8
|
begin
|
9
9
|
@tubes = beanstalk.list_tubes
|
10
10
|
@stats = beanstalk.stats
|
11
|
-
|
11
|
+
chart_data = get_chart_data_hash(@tubes)
|
12
|
+
@total_jobs_data = chart_data["total_jobs_data"]
|
13
|
+
@buried_jobs_data = chart_data["buried_jobs_data"] if chart_data["buried_jobs_data"]["items"].size > 0
|
12
14
|
@message = session[:message]
|
13
15
|
session[:message] = nil
|
14
16
|
erb :index
|
@@ -135,21 +137,34 @@ module BeanstalkdView
|
|
135
137
|
send_file file
|
136
138
|
end
|
137
139
|
|
138
|
-
def
|
139
|
-
|
140
|
-
|
140
|
+
def get_chart_data_hash(tubes)
|
141
|
+
chart_data = Hash.new
|
142
|
+
chart_data["total_jobs_data"] = Hash.new
|
143
|
+
chart_data["buried_jobs_data"] = Hash.new
|
144
|
+
chart_data["total_jobs_data"]["items"] = Array.new
|
145
|
+
chart_data["buried_jobs_data"]["items"] = Array.new
|
141
146
|
tubes.keys.each do |key|
|
142
147
|
tubes[key].each do |tube|
|
143
148
|
stats = beanstalk.stats_tube(tube)
|
149
|
+
#total_jobs
|
144
150
|
total_jobs = stats['total-jobs']
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
151
|
+
if total_jobs > 0
|
152
|
+
total_datum = Hash.new
|
153
|
+
total_datum["label"] = tube
|
154
|
+
total_datum["data"] = total_jobs
|
155
|
+
chart_data["total_jobs_data"]["items"] << total_datum
|
156
|
+
end
|
157
|
+
#buried_jobs
|
158
|
+
buried_jobs = stats['current-jobs-buried']
|
159
|
+
if buried_jobs > 0
|
160
|
+
buried_datum = Hash.new
|
161
|
+
buried_datum["label"] = tube
|
162
|
+
buried_datum["data"] = buried_jobs
|
163
|
+
chart_data["buried_jobs_data"]["items"] << buried_datum
|
164
|
+
end
|
149
165
|
end
|
150
166
|
end
|
151
|
-
|
152
|
-
total_jobs_data
|
167
|
+
chart_data
|
153
168
|
end
|
154
169
|
|
155
170
|
end
|
@@ -69,6 +69,7 @@
|
|
69
69
|
<tr rel="tooltip" title="The rate of job bury calls to reserve calls.">
|
70
70
|
<td>Bury Rate</td>
|
71
71
|
<% bury_reserve_rate = (@stats["cmd-bury"].to_f / @stats["cmd-reserve"].to_f) %>
|
72
|
+
<% bury_reserve_rate = 0 if bury_reserve_rate.nan? %>
|
72
73
|
<% if bury_reserve_rate > 0.01 %>
|
73
74
|
<td class="data_cell"><span class="badge badge-error"><%= bury_reserve_rate %></span></td>
|
74
75
|
<% else %>
|
@@ -78,6 +79,7 @@
|
|
78
79
|
<tr rel="tooltip" title="The rate of job timeouts to reserve calls.">
|
79
80
|
<td>Timeout Rate</td>
|
80
81
|
<% timeout_reserve_rate = (@stats["job-timeouts"].to_f / @stats["cmd-reserve"].to_f) %>
|
82
|
+
<% timeout_reserve_rate = 0 if timeout_reserve_rate.nan? %>
|
81
83
|
<% if timeout_reserve_rate > 0.01 %>
|
82
84
|
<td class="data_cell"><span class="badge badge-error"><%= timeout_reserve_rate %></span></td>
|
83
85
|
<% else %>
|
@@ -275,39 +277,64 @@
|
|
275
277
|
<label class="control-label" for="textarea">Job Body JSON Hash, e.g. {} or {"id": 1, "name": "Bob"}</label>
|
276
278
|
<textarea id="form_job_body" class="input-xlarge" name="body" rows="3"></textarea>
|
277
279
|
<br/>
|
278
|
-
<a id="add_job_btn" href="
|
280
|
+
<a id="add_job_btn" href="#" class="btn">Add Job</a>
|
279
281
|
</form>
|
280
282
|
</div>
|
281
283
|
|
282
284
|
<div class="span6">
|
283
|
-
<
|
284
|
-
|
285
|
-
|
285
|
+
<div id="total_jobs_container">
|
286
|
+
<h3>Total Jobs</h3>
|
287
|
+
<canvas id="total_jobs_chart"></canvas>
|
288
|
+
</div>
|
289
|
+
<div id="buried_jobs_container" style="visibility:hidden">
|
290
|
+
<br/>
|
291
|
+
<h3>Current Jobs Buried</h3>
|
292
|
+
<canvas id="buried_jobs_chart"></canvas>
|
293
|
+
</div>
|
294
|
+
</div>
|
286
295
|
</div>
|
287
296
|
</div>
|
288
297
|
|
289
298
|
<script type="text/javascript">
|
290
299
|
$(document).ready(function(){
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
300
|
+
|
301
|
+
function draw_pie_chart(div, data) {
|
302
|
+
//Create pie charts
|
303
|
+
var chart = new Bluff.Bar(div, 460);
|
304
|
+
//Setup theme
|
305
|
+
var colors = ['#6886B4', '#FDD84E', '#72AE6E', '#D1695E', '#8A6EAF', '#EFAA43', 'white'];
|
306
|
+
chart.set_theme({
|
307
|
+
colors: colors,
|
308
|
+
marker_color: 'white',
|
309
|
+
font_color: 'white',
|
310
|
+
background_colors: ['#008000', '#008000']
|
311
|
+
});
|
312
|
+
chart.tooltips = true;
|
313
|
+
chart.hide_line_markers = false;
|
314
|
+
chart.minimum_value = 0;
|
315
|
+
var max_value = 0;
|
316
|
+
//Add each data item to chart
|
317
|
+
for (i in data.items) {
|
318
|
+
var item = data.items[i];
|
319
|
+
chart.data(item.label, item.data);
|
320
|
+
if (item.data > max_value) {
|
321
|
+
max_value = item.data;
|
322
|
+
}
|
323
|
+
}
|
324
|
+
chart.maximum_value = max_value;
|
325
|
+
//Finally draw the chart
|
326
|
+
chart.draw();
|
327
|
+
}
|
303
328
|
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
329
|
+
<% if @total_jobs_data %>
|
330
|
+
var total_jobs_data = <%= @total_jobs_data.to_json.html_safe %>
|
331
|
+
draw_pie_chart('total_jobs_chart', total_jobs_data);
|
332
|
+
<% end %>
|
333
|
+
<% if @buried_jobs_data %>
|
334
|
+
var buried_jobs_data = <%= @buried_jobs_data.to_json.html_safe %>
|
335
|
+
draw_pie_chart('buried_jobs_chart', buried_jobs_data);
|
336
|
+
$("#buried_jobs_container").css('visibility', 'visible');
|
337
|
+
<% end %>
|
311
338
|
});
|
312
339
|
</script>
|
313
340
|
|
@@ -103,9 +103,9 @@
|
|
103
103
|
|
104
104
|
<h3>Peek Jobs</h3>
|
105
105
|
<form class="well" name="peek_jobs">
|
106
|
-
<a id="peek_ready_btn" href="
|
107
|
-
<a id="peek_delayed_btn" href="
|
108
|
-
<a id="peek_buried_btn" href="
|
106
|
+
<a id="peek_ready_btn" href="#" class="btn">Peek Ready</a>
|
107
|
+
<a id="peek_delayed_btn" href="#" class="btn">Peek Delayed</a>
|
108
|
+
<a id="peek_buried_btn" href="#" class="btn">Peek Buried</a>
|
109
109
|
</form>
|
110
110
|
|
111
111
|
</div>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beanstalkd_view
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-04-
|
12
|
+
date: 2012-04-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
|
-
requirement: &
|
16
|
+
requirement: &2156722560 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2156722560
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: beanstalk-client
|
27
|
-
requirement: &
|
27
|
+
requirement: &2156722060 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.1.1
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2156722060
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: vegas
|
38
|
-
requirement: &
|
38
|
+
requirement: &2156721580 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.1.2
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2156721580
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: json
|
49
|
-
requirement: &
|
49
|
+
requirement: &2156721180 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2156721180
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &2156720600 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2156720600
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rack-test
|
71
|
-
requirement: &
|
71
|
+
requirement: &2156720060 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2156720060
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &2156719460 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2156719460
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: capybara
|
93
|
-
requirement: &
|
93
|
+
requirement: &2156718720 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *2156718720
|
102
102
|
description: A Sinatra app to view/manage beanstalkd queues that can be embedded in
|
103
103
|
a Rails app similar to what's available in Resque
|
104
104
|
email: dennis.kuczynski@gmail.com
|