redis-stat 0.3.1-java → 0.3.2-java
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/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
|