redis-stat 0.3.1-java → 0.3.2-java
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/redis-stat.rb +17 -10
- data/lib/redis-stat/constants.rb +6 -5
- data/lib/redis-stat/option.rb +2 -5
- data/lib/redis-stat/server.rb +31 -15
- data/lib/redis-stat/server/public/js/site.js +11 -9
- data/lib/redis-stat/server/views/index.erb +15 -19
- data/lib/redis-stat/version.rb +1 -1
- data/redis-stat.gemspec +10 -7
- metadata +179 -179
data/lib/redis-stat.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'redis-stat/version'
|
4
4
|
require 'redis-stat/constants'
|
5
5
|
require 'redis-stat/option'
|
6
|
-
require 'redis-stat/server'
|
6
|
+
require 'redis-stat/server'
|
7
7
|
require 'insensitive_hash'
|
8
8
|
require 'redis'
|
9
9
|
require 'tabularize'
|
@@ -13,12 +13,12 @@ require 'parallelize'
|
|
13
13
|
require 'si'
|
14
14
|
|
15
15
|
class RedisStat
|
16
|
-
attr_reader :hosts, :measures, :verbose, :interval
|
16
|
+
attr_reader :hosts, :measures, :tab_measures, :verbose, :interval
|
17
17
|
|
18
18
|
def initialize options = {}
|
19
19
|
options = RedisStat::Option::DEFAULT.merge options
|
20
20
|
@hosts = options[:hosts]
|
21
|
-
@redises = @hosts.map { |e|
|
21
|
+
@redises = @hosts.map { |e|
|
22
22
|
host, port = e.split(':')
|
23
23
|
Redis.new(Hash[ {:host => host, :port => port, :timeout => DEFAULT_REDIS_TIMEOUT}.select { |k, v| v } ])
|
24
24
|
}
|
@@ -29,7 +29,8 @@ class RedisStat
|
|
29
29
|
@csv = options[:csv]
|
30
30
|
@auth = options[:auth]
|
31
31
|
@verbose = options[:verbose]
|
32
|
-
@measures = MEASURES[ @verbose ? :verbose : :default ]
|
32
|
+
@measures = MEASURES[ @verbose ? :verbose : :default ].map { |m| [*m].first }
|
33
|
+
@tab_measures= MEASURES[:static].map { |m| [*m].first }
|
33
34
|
@all_measures= MEASURES.values.inject(:+).uniq - [:at]
|
34
35
|
@count = 0
|
35
36
|
@style = options[:style]
|
@@ -72,9 +73,12 @@ class RedisStat
|
|
72
73
|
rescue Interrupt
|
73
74
|
raise
|
74
75
|
rescue Exception => e
|
75
|
-
|
76
|
+
errs += 1
|
77
|
+
if server || errs < NUM_RETRIES
|
76
78
|
@os.puts if errs == 1
|
77
|
-
@os.puts ansi(:red, :bold) {
|
79
|
+
@os.puts ansi(:red, :bold) {
|
80
|
+
"#{e} (#{ server ? "#{errs}" : [errs, NUM_RETRIES].join('/') })"
|
81
|
+
}
|
78
82
|
sleep @interval
|
79
83
|
retry
|
80
84
|
else
|
@@ -128,8 +132,11 @@ private
|
|
128
132
|
redis.info.insensitive
|
129
133
|
}.each do |rinfo|
|
130
134
|
(@all_measures + rinfo.keys.select { |k| k =~ /^db[0-9]+$/ }).each do |k|
|
135
|
+
ks = [*k]
|
136
|
+
v = ks.map { |e| rinfo[e] }.compact.first
|
137
|
+
k = ks.first
|
131
138
|
info[k] ||= []
|
132
|
-
info[k] <<
|
139
|
+
info[k] << v
|
133
140
|
end
|
134
141
|
end
|
135
142
|
end
|
@@ -241,7 +248,7 @@ private
|
|
241
248
|
)
|
242
249
|
tab << [nil] + @hosts.map { |h| ansi(:bold, :green) { h } }
|
243
250
|
tab.separator!
|
244
|
-
|
251
|
+
@tab_measures.each do |key|
|
245
252
|
tab << [ansi(:bold) { key }] + info[key] unless info[key].compact.empty?
|
246
253
|
end
|
247
254
|
@os.puts tab
|
@@ -260,7 +267,7 @@ private
|
|
260
267
|
table << info_output.map { |pair|
|
261
268
|
ansi(*((@colors[pair.first] || []) + [:underline])) {
|
262
269
|
LABELS[pair.first] || pair.first
|
263
|
-
}
|
270
|
+
}
|
264
271
|
}
|
265
272
|
table.separator!
|
266
273
|
table
|
@@ -292,7 +299,7 @@ private
|
|
292
299
|
val &&= (val * 100).round
|
293
300
|
[humanize_number(val), val]
|
294
301
|
when :keys
|
295
|
-
val = Hash[ info.select { |k, v| k =~ /^db[0-9]+$/ } ].values.inject(0) { |sum, vs|
|
302
|
+
val = Hash[ info.select { |k, v| k =~ /^db[0-9]+$/ } ].values.inject(0) { |sum, vs|
|
296
303
|
sum + vs.map { |v| Hash[ v.split(',').map { |e| e.split '=' } ]['keys'].to_i }.inject(:+)
|
297
304
|
}
|
298
305
|
[humanize_number(val), val]
|
data/lib/redis-stat/constants.rb
CHANGED
@@ -9,14 +9,15 @@ class RedisStat
|
|
9
9
|
MEASURES = {
|
10
10
|
:static => [
|
11
11
|
:redis_version,
|
12
|
+
:redis_mode,
|
12
13
|
:process_id,
|
13
14
|
:uptime_in_seconds,
|
14
15
|
:uptime_in_days,
|
15
|
-
:gcc_version,
|
16
16
|
:role,
|
17
17
|
:connected_slaves,
|
18
18
|
:aof_enabled,
|
19
|
-
:
|
19
|
+
[:rdb_bgsave_in_progress, :bgsave_in_progress],
|
20
|
+
[:rdb_last_save_time, :last_save_time],
|
20
21
|
],
|
21
22
|
:default => [
|
22
23
|
:at,
|
@@ -57,7 +58,7 @@ class RedisStat
|
|
57
58
|
:keyspace_misses,
|
58
59
|
:aof_current_size,
|
59
60
|
:aof_base_size,
|
60
|
-
:changes_since_last_save,
|
61
|
+
[:rdb_changes_since_last_save, :changes_since_last_save],
|
61
62
|
:pubsub_channels,
|
62
63
|
:pubsub_patterns,
|
63
64
|
]
|
@@ -85,7 +86,7 @@ class RedisStat
|
|
85
86
|
:keyspace_misses_per_second => [:magenta],
|
86
87
|
:aof_current_size => [:cyan],
|
87
88
|
:aof_base_size => [:cyan],
|
88
|
-
:
|
89
|
+
:rdb_changes_since_last_save => [:green, :bold],
|
89
90
|
:pubsub_channels => [:cyan, :bold],
|
90
91
|
:pubsub_patterns => [:cyan, :bold],
|
91
92
|
}
|
@@ -112,7 +113,7 @@ class RedisStat
|
|
112
113
|
:keyspace_misses_per_second => 'mis/s',
|
113
114
|
:aof_current_size => 'aofcs',
|
114
115
|
:aof_base_size => 'aofbs',
|
115
|
-
:
|
116
|
+
:rdb_changes_since_last_save => 'chsv',
|
116
117
|
:pubsub_channels => 'psch',
|
117
118
|
:pubsub_patterns => 'psp',
|
118
119
|
}
|
data/lib/redis-stat/option.rb
CHANGED
@@ -42,9 +42,6 @@ module Option
|
|
42
42
|
|
43
43
|
opts.on('--server[=PORT]', "Launch redis-stat web server (default port: #{RedisStat::DEFAULT_SERVER_PORT})") do |v|
|
44
44
|
options[:server_port] = v || RedisStat::DEFAULT_SERVER_PORT
|
45
|
-
if RUBY_PLATFORM == 'java'
|
46
|
-
raise ArgumentError.new("Sorry. redis-stat server is not supported in JRuby.")
|
47
|
-
end
|
48
45
|
end
|
49
46
|
|
50
47
|
opts.on('--daemon', "Daemonize redis-stat. Must be used with --server option.") do |v|
|
@@ -66,7 +63,7 @@ module Option
|
|
66
63
|
exit 0
|
67
64
|
end
|
68
65
|
}
|
69
|
-
|
66
|
+
|
70
67
|
begin
|
71
68
|
opts.parse! argv
|
72
69
|
|
@@ -125,7 +122,7 @@ module Option
|
|
125
122
|
raise ArgumentError.new("Invalid style")
|
126
123
|
end
|
127
124
|
end
|
128
|
-
|
125
|
+
|
129
126
|
if options[:daemon] && options[:server_port].nil?
|
130
127
|
raise ArgumentError.new("--daemon option must be used in conjunction with --server option")
|
131
128
|
end
|
data/lib/redis-stat/server.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'sinatra/base'
|
2
2
|
require 'json'
|
3
|
+
require 'thread'
|
3
4
|
|
4
5
|
class RedisStat
|
5
6
|
class Server < Sinatra::Base
|
@@ -7,7 +8,10 @@ class Server < Sinatra::Base
|
|
7
8
|
STAT_TABLE_ROWS = 10
|
8
9
|
|
9
10
|
configure do
|
10
|
-
|
11
|
+
if RUBY_PLATFORM == 'java'
|
12
|
+
require 'puma'
|
13
|
+
set :server, :puma
|
14
|
+
else
|
11
15
|
require 'thin'
|
12
16
|
set :server, :thin
|
13
17
|
end
|
@@ -15,24 +19,32 @@ class Server < Sinatra::Base
|
|
15
19
|
set :root, File.join( File.dirname(__FILE__), 'server' )
|
16
20
|
set :clients, []
|
17
21
|
set :history, []
|
22
|
+
set :mutex, Mutex.new
|
18
23
|
end
|
19
24
|
|
20
25
|
get '/' do
|
21
|
-
@hosts
|
22
|
-
@info
|
23
|
-
@measures
|
24
|
-
@
|
25
|
-
@
|
26
|
-
@
|
26
|
+
@hosts = settings.redis_stat.hosts
|
27
|
+
@info = settings.redis_stat.info
|
28
|
+
@measures = settings.redis_stat.measures
|
29
|
+
@tab_measures = settings.redis_stat.tab_measures
|
30
|
+
@interval = settings.redis_stat.interval
|
31
|
+
@verbose = settings.redis_stat.verbose ? 'verbose' : ''
|
32
|
+
@history = settings.history
|
27
33
|
erb :index
|
28
34
|
end
|
29
35
|
|
30
36
|
get '/pull' do
|
31
37
|
content_type 'text/event-stream'
|
32
38
|
|
33
|
-
|
34
|
-
settings.
|
35
|
-
|
39
|
+
if RUBY_PLATFORM == 'java'
|
40
|
+
if last = settings.mutex.synchronize { settings.history.last }
|
41
|
+
body "retry: #{settings.redis_stat.interval * 900}\ndata: #{last.to_json}\n\n"
|
42
|
+
end
|
43
|
+
else
|
44
|
+
stream(:keep_open) do |out|
|
45
|
+
settings.clients << out
|
46
|
+
out.callback { settings.clients.delete out }
|
47
|
+
end
|
36
48
|
end
|
37
49
|
end
|
38
50
|
|
@@ -44,14 +56,18 @@ class Server < Sinatra::Base
|
|
44
56
|
end
|
45
57
|
|
46
58
|
def push info, data
|
47
|
-
static = Hash[
|
59
|
+
static = Hash[settings.redis_stat.tab_measures.map { |stat|
|
48
60
|
[stat, info[stat]]
|
49
61
|
}]
|
50
|
-
data = {:static => static, :dynamic => data}
|
62
|
+
data = {:at => Time.now.to_i, :static => static, :dynamic => data}
|
63
|
+
|
64
|
+
hist = settings.history
|
65
|
+
settings.mutex.synchronize do
|
66
|
+
hist << data
|
67
|
+
hist.shift if hist.length > HISTORY_LENGTH
|
68
|
+
end
|
51
69
|
|
52
|
-
|
53
|
-
@history << data
|
54
|
-
@history.shift if @history.length > HISTORY_LENGTH
|
70
|
+
return if settings.clients.empty?
|
55
71
|
|
56
72
|
resp = "data: #{data.to_json}\n\n"
|
57
73
|
settings.clients.each do |cl|
|
@@ -5,8 +5,7 @@ var history = [],
|
|
5
5
|
colors,
|
6
6
|
info,
|
7
7
|
fade_dur,
|
8
|
-
chart_options
|
9
|
-
stats_to_update = ['uptime_in_seconds', 'uptime_in_days']
|
8
|
+
chart_options
|
10
9
|
|
11
10
|
var initialize = function(params) {
|
12
11
|
measures = params.measures
|
@@ -89,7 +88,7 @@ var initialize = function(params) {
|
|
89
88
|
shadow: false,
|
90
89
|
},
|
91
90
|
series: [
|
92
|
-
{ label: "
|
91
|
+
{ label: "mem" },
|
93
92
|
{ label: "rss" }
|
94
93
|
],
|
95
94
|
axesDefaults: {
|
@@ -134,8 +133,13 @@ var initialize = function(params) {
|
|
134
133
|
}
|
135
134
|
|
136
135
|
var appendToHistory = function(json) {
|
137
|
-
history.
|
138
|
-
|
136
|
+
if (history.length == 0 || json.at > history[ history.length - 1 ].at) {
|
137
|
+
history.push(json)
|
138
|
+
if (history.length > max) history.shift()
|
139
|
+
return true
|
140
|
+
} else {
|
141
|
+
return false
|
142
|
+
}
|
139
143
|
}
|
140
144
|
|
141
145
|
var updateTable = function() {
|
@@ -144,12 +148,10 @@ var updateTable = function() {
|
|
144
148
|
jd = json.dynamic
|
145
149
|
|
146
150
|
// Instance information (mostly static)
|
147
|
-
|
148
|
-
for (var i = 0; i < stats_to_update.length; ++i) {
|
149
|
-
var stat = stats_to_update[i]
|
151
|
+
for (var stat in js) {
|
150
152
|
$("#" + stat).replaceWith(
|
151
153
|
"<tr id='" + stat + "'><th>" + stat + "</th>" +
|
152
|
-
js[stat].map(function(e) { return "<td>" + e + "</td>" }).join() +
|
154
|
+
js[stat].map(function(e) { return "<td>" + (e == null ? "" : e) + "</td>" }).join() +
|
153
155
|
"</tr>"
|
154
156
|
)
|
155
157
|
}
|
@@ -26,6 +26,11 @@
|
|
26
26
|
<div class="row">
|
27
27
|
<div class="span12">
|
28
28
|
<h3>Dashboard</h3>
|
29
|
+
<% unless RUBY_PLATFORM == 'java' %>
|
30
|
+
<div class="alert alert-error hide">
|
31
|
+
<h4>Lost connection to redis-stat</h4>
|
32
|
+
</div>
|
33
|
+
<% end %>
|
29
34
|
</div>
|
30
35
|
</div>
|
31
36
|
|
@@ -80,7 +85,7 @@
|
|
80
85
|
</tr>
|
81
86
|
</thead>
|
82
87
|
<tbody>
|
83
|
-
<%
|
88
|
+
<% @tab_measures.each do |stat| %>
|
84
89
|
<tr id="<%= stat %>">
|
85
90
|
<th>
|
86
91
|
<%= stat %>
|
@@ -103,19 +108,6 @@
|
|
103
108
|
<img style="position: fixed; top: 0; right: 0; border: 0; z-index: 10000" src="/forkme.png" alt="Fork me on GitHub">
|
104
109
|
</a>
|
105
110
|
|
106
|
-
<div class="modal hide fade" id="fail" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
107
|
-
<div class="modal-header">
|
108
|
-
<h3 id="myModalLabel">Oops!</h3>
|
109
|
-
</div>
|
110
|
-
<div class="modal-body">
|
111
|
-
<p>Lost connection to redis-stat.</p>
|
112
|
-
<p>Try reloading the page.</p>
|
113
|
-
</div>
|
114
|
-
<div class="modal-footer">
|
115
|
-
<a href="/" class="btn btn-primary">Reload</a>
|
116
|
-
</div>
|
117
|
-
</div>
|
118
|
-
|
119
111
|
<footer class="footer">
|
120
112
|
<div class="container">
|
121
113
|
<p>Powered by <a href="http://twitter.github.com/bootstrap/">Bootstrap</a>, <a href="http://jquery.com/">jQuery</a> and <a href="http://www.jqplot.com/">jqPlot</a>.</p>
|
@@ -134,15 +126,19 @@
|
|
134
126
|
|
135
127
|
$("#stat_table th a").tooltip()
|
136
128
|
|
129
|
+
// TODO Check (typeof(EventSource) !== "undefined")
|
130
|
+
|
137
131
|
var source = new EventSource("/pull")
|
138
132
|
source.onmessage = function(e) {
|
139
|
-
appendToHistory(JSON.parse(e.data))
|
140
|
-
|
141
|
-
|
133
|
+
if (appendToHistory(JSON.parse(e.data))) {
|
134
|
+
$(".alert").fadeOut()
|
135
|
+
updateTable()
|
136
|
+
updatePlot()
|
137
|
+
}
|
142
138
|
}
|
143
139
|
source.onerror = function(e) {
|
144
|
-
|
145
|
-
|
140
|
+
$(".alert").fadeIn()
|
141
|
+
// source.close()
|
146
142
|
}
|
147
143
|
})
|
148
144
|
</script>
|
data/lib/redis-stat/version.rb
CHANGED
data/redis-stat.gemspec
CHANGED
@@ -17,15 +17,18 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.version = RedisStat::VERSION
|
18
18
|
|
19
19
|
gem.add_runtime_dependency "ansi", '~> 1.4.3'
|
20
|
-
gem.add_runtime_dependency "redis", '~> 3.0.
|
21
|
-
gem.add_runtime_dependency "tabularize", '~> 0.2.
|
20
|
+
gem.add_runtime_dependency "redis", '~> 3.0.2'
|
21
|
+
gem.add_runtime_dependency "tabularize", '~> 0.2.9'
|
22
22
|
gem.add_runtime_dependency "insensitive_hash", '~> 0.3.0'
|
23
23
|
gem.add_runtime_dependency "parallelize", '~> 0.4.0'
|
24
|
-
gem.add_runtime_dependency "si", '~> 0.1.
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
gem.add_runtime_dependency "si", '~> 0.1.4'
|
25
|
+
gem.add_runtime_dependency "sinatra", '~> 1.3.3'
|
26
|
+
gem.add_runtime_dependency "json", '~> 1.7.5'
|
27
|
+
|
28
|
+
if RUBY_PLATFORM == 'java'
|
29
|
+
gem.add_runtime_dependency "puma", '~> 1.6.3'
|
30
|
+
else
|
31
|
+
gem.add_runtime_dependency "thin", '~> 1.5.0'
|
29
32
|
gem.add_runtime_dependency "daemons", '~> 1.1.9'
|
30
33
|
end
|
31
34
|
|
metadata
CHANGED
@@ -1,195 +1,195 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-stat
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 0.3.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.3.2
|
6
6
|
platform: java
|
7
|
-
authors:
|
8
|
-
- Junegunn Choi
|
9
|
-
autorequire:
|
7
|
+
authors:
|
8
|
+
- Junegunn Choi
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
- !ruby/object:Gem::
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
none: false
|
126
|
-
prerelease: false
|
127
|
-
type: :development
|
12
|
+
|
13
|
+
date: 2012-12-03 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: ansi
|
17
|
+
prerelease: false
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ~>
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.4.3
|
24
|
+
type: :runtime
|
25
|
+
version_requirements: *id001
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: redis
|
28
|
+
prerelease: false
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 3.0.2
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: tabularize
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.2.9
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: insensitive_hash
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ~>
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 0.3.0
|
57
|
+
type: :runtime
|
58
|
+
version_requirements: *id004
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: parallelize
|
61
|
+
prerelease: false
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ~>
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 0.4.0
|
68
|
+
type: :runtime
|
69
|
+
version_requirements: *id005
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: si
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 0.1.4
|
79
|
+
type: :runtime
|
80
|
+
version_requirements: *id006
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: sinatra
|
83
|
+
prerelease: false
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.3.3
|
90
|
+
type: :runtime
|
91
|
+
version_requirements: *id007
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: json
|
94
|
+
prerelease: false
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ~>
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: 1.7.5
|
101
|
+
type: :runtime
|
102
|
+
version_requirements: *id008
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: puma
|
105
|
+
prerelease: false
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
108
|
+
requirements:
|
109
|
+
- - ~>
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 1.6.3
|
112
|
+
type: :runtime
|
113
|
+
version_requirements: *id009
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: test-unit
|
116
|
+
prerelease: false
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: "0"
|
123
|
+
type: :development
|
124
|
+
version_requirements: *id010
|
128
125
|
description: A real-time Redis monitoring tool written in Ruby
|
129
|
-
email:
|
130
|
-
- junegunn.c@gmail.com
|
131
|
-
executables:
|
132
|
-
- redis-stat
|
126
|
+
email:
|
127
|
+
- junegunn.c@gmail.com
|
128
|
+
executables:
|
129
|
+
- redis-stat
|
133
130
|
extensions: []
|
131
|
+
|
134
132
|
extra_rdoc_files: []
|
135
|
-
|
136
|
-
|
137
|
-
-
|
138
|
-
-
|
139
|
-
-
|
140
|
-
-
|
141
|
-
-
|
142
|
-
-
|
143
|
-
- lib/redis-stat
|
144
|
-
- lib/redis-stat/
|
145
|
-
- lib/redis-stat/
|
146
|
-
- lib/redis-stat/server
|
147
|
-
- lib/redis-stat/server/public/bootstrap/css/bootstrap.min.css
|
148
|
-
- lib/redis-stat/server/public/bootstrap/
|
149
|
-
- lib/redis-stat/server/public/bootstrap/img/glyphicons-halflings.png
|
150
|
-
- lib/redis-stat/server/public/bootstrap/
|
151
|
-
- lib/redis-stat/server/public/
|
152
|
-
- lib/redis-stat/server/public/
|
153
|
-
- lib/redis-stat/server/public/favicon.
|
154
|
-
- lib/redis-stat/server/public/
|
155
|
-
- lib/redis-stat/server/public/
|
156
|
-
- lib/redis-stat/server/public/jqplot/jqplot.
|
157
|
-
- lib/redis-stat/server/public/jqplot/jqplot.
|
158
|
-
- lib/redis-stat/server/public/jqplot/
|
159
|
-
- lib/redis-stat/server/public/jqplot/jquery.jqplot.min.
|
160
|
-
- lib/redis-stat/server/public/jquery
|
161
|
-
- lib/redis-stat/server/public/
|
162
|
-
- lib/redis-stat/server/
|
163
|
-
- lib/redis-stat/
|
164
|
-
- redis-stat.
|
165
|
-
-
|
166
|
-
- test/
|
133
|
+
|
134
|
+
files:
|
135
|
+
- .gitignore
|
136
|
+
- Gemfile
|
137
|
+
- LICENSE
|
138
|
+
- README.md
|
139
|
+
- Rakefile
|
140
|
+
- bin/redis-stat
|
141
|
+
- lib/redis-stat.rb
|
142
|
+
- lib/redis-stat/constants.rb
|
143
|
+
- lib/redis-stat/option.rb
|
144
|
+
- lib/redis-stat/server.rb
|
145
|
+
- lib/redis-stat/server/public/bootstrap/css/bootstrap-responsive.min.css
|
146
|
+
- lib/redis-stat/server/public/bootstrap/css/bootstrap.min.css
|
147
|
+
- lib/redis-stat/server/public/bootstrap/img/glyphicons-halflings-white.png
|
148
|
+
- lib/redis-stat/server/public/bootstrap/img/glyphicons-halflings.png
|
149
|
+
- lib/redis-stat/server/public/bootstrap/js/bootstrap.min.js
|
150
|
+
- lib/redis-stat/server/public/css/site.css
|
151
|
+
- lib/redis-stat/server/public/favicon.ico
|
152
|
+
- lib/redis-stat/server/public/favicon.png
|
153
|
+
- lib/redis-stat/server/public/forkme.png
|
154
|
+
- lib/redis-stat/server/public/jqplot/jqplot.canvasAxisLabelRenderer.min.js
|
155
|
+
- lib/redis-stat/server/public/jqplot/jqplot.canvasAxisTickRenderer.min.js
|
156
|
+
- lib/redis-stat/server/public/jqplot/jqplot.canvasTextRenderer.min.js
|
157
|
+
- lib/redis-stat/server/public/jqplot/jquery.jqplot.min.css
|
158
|
+
- lib/redis-stat/server/public/jqplot/jquery.jqplot.min.js
|
159
|
+
- lib/redis-stat/server/public/jquery-1.8.2.min.js
|
160
|
+
- lib/redis-stat/server/public/js/site.js
|
161
|
+
- lib/redis-stat/server/views/index.erb
|
162
|
+
- lib/redis-stat/version.rb
|
163
|
+
- redis-stat.gemspec
|
164
|
+
- test/bin_helper.rb
|
165
|
+
- test/test_redis-stat.rb
|
167
166
|
homepage: https://github.com/junegunn/redis-stat
|
168
167
|
licenses: []
|
169
|
-
|
168
|
+
|
169
|
+
post_install_message:
|
170
170
|
rdoc_options: []
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
- - ! '>='
|
176
|
-
- !ruby/object:Gem::Version
|
177
|
-
version: !binary |-
|
178
|
-
MA==
|
171
|
+
|
172
|
+
require_paths:
|
173
|
+
- lib
|
174
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
179
175
|
none: false
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
MA==
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: "0"
|
180
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
186
181
|
none: false
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: "0"
|
187
186
|
requirements: []
|
188
|
-
|
187
|
+
|
188
|
+
rubyforge_project:
|
189
189
|
rubygems_version: 1.8.24
|
190
|
-
signing_key:
|
190
|
+
signing_key:
|
191
191
|
specification_version: 3
|
192
192
|
summary: A real-time Redis monitoring tool written in Ruby
|
193
|
-
test_files:
|
194
|
-
- test/bin_helper.rb
|
195
|
-
- test/test_redis-stat.rb
|
193
|
+
test_files:
|
194
|
+
- test/bin_helper.rb
|
195
|
+
- test/test_redis-stat.rb
|