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 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' unless RUBY_PLATFORM == 'java'
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
- if (errs += 1) < NUM_RETRIES
76
+ errs += 1
77
+ if server || errs < NUM_RETRIES
76
78
  @os.puts if errs == 1
77
- @os.puts ansi(:red, :bold) { "#{e} (#{errs}/#{NUM_RETRIES})" }
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] << rinfo[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
- MEASURES[:static].each do |key|
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]
@@ -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
- :vm_enabled
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
- :changes_since_last_save => [:green, :bold],
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
- :changes_since_last_save => 'chsv',
116
+ :rdb_changes_since_last_save => 'chsv',
116
117
  :pubsub_channels => 'psch',
117
118
  :pubsub_patterns => 'psp',
118
119
  }
@@ -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
@@ -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
- unless RUBY_PLATFORM == 'java'
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 = settings.redis_stat.hosts
22
- @info = settings.redis_stat.info
23
- @measures = settings.redis_stat.measures
24
- @interval = settings.redis_stat.interval
25
- @verbose = settings.redis_stat.verbose ? 'verbose' : ''
26
- @history = settings.history
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
- stream(:keep_open) do |out|
34
- settings.clients << out
35
- out.callback { settings.clients.delete out }
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[RedisStat::MEASURES[:static].map { |stat|
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
- @history = settings.history
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: "used" },
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.push(json)
138
- if (history.length > max) history.shift()
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
- // for (stat in js) {
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
- <% RedisStat::MEASURES[:static].each do |stat| %>
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
- updateTable()
141
- updatePlot()
133
+ if (appendToHistory(JSON.parse(e.data))) {
134
+ $(".alert").fadeOut()
135
+ updateTable()
136
+ updatePlot()
137
+ }
142
138
  }
143
139
  source.onerror = function(e) {
144
- source.close()
145
- $('#fail').modal({backdrop: 'static'})
140
+ $(".alert").fadeIn()
141
+ // source.close()
146
142
  }
147
143
  })
148
144
  </script>
@@ -1,3 +1,3 @@
1
1
  class RedisStat
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
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.1'
21
- gem.add_runtime_dependency "tabularize", '~> 0.2.8'
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.3'
25
- unless RUBY_PLATFORM == 'java'
26
- gem.add_runtime_dependency "sinatra", '~> 1.3.3'
27
- gem.add_runtime_dependency "thin", '~> 1.5.0'
28
- gem.add_runtime_dependency "json", '~> 1.7.5'
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.1
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
- date: 2012-10-31 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: ansi
16
- version_requirements: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ~>
19
- - !ruby/object:Gem::Version
20
- version: 1.4.3
21
- none: false
22
- requirement: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: 1.4.3
27
- none: false
28
- prerelease: false
29
- type: :runtime
30
- - !ruby/object:Gem::Dependency
31
- name: redis
32
- version_requirements: !ruby/object:Gem::Requirement
33
- requirements:
34
- - - ~>
35
- - !ruby/object:Gem::Version
36
- version: 3.0.1
37
- none: false
38
- requirement: !ruby/object:Gem::Requirement
39
- requirements:
40
- - - ~>
41
- - !ruby/object:Gem::Version
42
- version: 3.0.1
43
- none: false
44
- prerelease: false
45
- type: :runtime
46
- - !ruby/object:Gem::Dependency
47
- name: tabularize
48
- version_requirements: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - ~>
51
- - !ruby/object:Gem::Version
52
- version: 0.2.8
53
- none: false
54
- requirement: !ruby/object:Gem::Requirement
55
- requirements:
56
- - - ~>
57
- - !ruby/object:Gem::Version
58
- version: 0.2.8
59
- none: false
60
- prerelease: false
61
- type: :runtime
62
- - !ruby/object:Gem::Dependency
63
- name: insensitive_hash
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ~>
67
- - !ruby/object:Gem::Version
68
- version: 0.3.0
69
- none: false
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ~>
73
- - !ruby/object:Gem::Version
74
- version: 0.3.0
75
- none: false
76
- prerelease: false
77
- type: :runtime
78
- - !ruby/object:Gem::Dependency
79
- name: parallelize
80
- version_requirements: !ruby/object:Gem::Requirement
81
- requirements:
82
- - - ~>
83
- - !ruby/object:Gem::Version
84
- version: 0.4.0
85
- none: false
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - ~>
89
- - !ruby/object:Gem::Version
90
- version: 0.4.0
91
- none: false
92
- prerelease: false
93
- type: :runtime
94
- - !ruby/object:Gem::Dependency
95
- name: si
96
- version_requirements: !ruby/object:Gem::Requirement
97
- requirements:
98
- - - ~>
99
- - !ruby/object:Gem::Version
100
- version: 0.1.3
101
- none: false
102
- requirement: !ruby/object:Gem::Requirement
103
- requirements:
104
- - - ~>
105
- - !ruby/object:Gem::Version
106
- version: 0.1.3
107
- none: false
108
- prerelease: false
109
- type: :runtime
110
- - !ruby/object:Gem::Dependency
111
- name: test-unit
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ! '>='
115
- - !ruby/object:Gem::Version
116
- version: !binary |-
117
- MA==
118
- none: false
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ! '>='
122
- - !ruby/object:Gem::Version
123
- version: !binary |-
124
- MA==
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
- files:
136
- - .gitignore
137
- - Gemfile
138
- - LICENSE
139
- - README.md
140
- - Rakefile
141
- - bin/redis-stat
142
- - lib/redis-stat.rb
143
- - lib/redis-stat/constants.rb
144
- - lib/redis-stat/option.rb
145
- - lib/redis-stat/server.rb
146
- - lib/redis-stat/server/public/bootstrap/css/bootstrap-responsive.min.css
147
- - lib/redis-stat/server/public/bootstrap/css/bootstrap.min.css
148
- - lib/redis-stat/server/public/bootstrap/img/glyphicons-halflings-white.png
149
- - lib/redis-stat/server/public/bootstrap/img/glyphicons-halflings.png
150
- - lib/redis-stat/server/public/bootstrap/js/bootstrap.min.js
151
- - lib/redis-stat/server/public/css/site.css
152
- - lib/redis-stat/server/public/favicon.ico
153
- - lib/redis-stat/server/public/favicon.png
154
- - lib/redis-stat/server/public/forkme.png
155
- - lib/redis-stat/server/public/jqplot/jqplot.canvasAxisLabelRenderer.min.js
156
- - lib/redis-stat/server/public/jqplot/jqplot.canvasAxisTickRenderer.min.js
157
- - lib/redis-stat/server/public/jqplot/jqplot.canvasTextRenderer.min.js
158
- - lib/redis-stat/server/public/jqplot/jquery.jqplot.min.css
159
- - lib/redis-stat/server/public/jqplot/jquery.jqplot.min.js
160
- - lib/redis-stat/server/public/jquery-1.8.2.min.js
161
- - lib/redis-stat/server/public/js/site.js
162
- - lib/redis-stat/server/views/index.erb
163
- - lib/redis-stat/version.rb
164
- - redis-stat.gemspec
165
- - test/bin_helper.rb
166
- - test/test_redis-stat.rb
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
- post_install_message:
168
+
169
+ post_install_message:
170
170
  rdoc_options: []
171
- require_paths:
172
- - lib
173
- required_ruby_version: !ruby/object:Gem::Requirement
174
- requirements:
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
- required_rubygems_version: !ruby/object:Gem::Requirement
181
- requirements:
182
- - - ! '>='
183
- - !ruby/object:Gem::Version
184
- version: !binary |-
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
- rubyforge_project:
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