mindreframer-riemann-dash 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/.gitignore +8 -0
  2. data/Gemfile +7 -0
  3. data/Gemfile.lock +52 -0
  4. data/LICENSE +21 -0
  5. data/README.markdown +52 -0
  6. data/Rakefile.rb +11 -0
  7. data/bin/riemann-dash +7 -0
  8. data/example/config.rb +17 -0
  9. data/lib/riemann/dash.rb +5 -0
  10. data/lib/riemann/dash/app.rb +32 -0
  11. data/lib/riemann/dash/config.rb +154 -0
  12. data/lib/riemann/dash/controller/css.rb +5 -0
  13. data/lib/riemann/dash/controller/index.rb +20 -0
  14. data/lib/riemann/dash/public/clock.js +45 -0
  15. data/lib/riemann/dash/public/dash.js +287 -0
  16. data/lib/riemann/dash/public/format.js +24 -0
  17. data/lib/riemann/dash/public/jquery-1.7.2.min.js +4 -0
  18. data/lib/riemann/dash/public/jquery-ui-1.9.0.custom.min.js +6 -0
  19. data/lib/riemann/dash/public/jquery.json-2.2.min.js +31 -0
  20. data/lib/riemann/dash/public/jquery.quickfit.js +144 -0
  21. data/lib/riemann/dash/public/jquery.simplemodal.1.4.3.min.js +26 -0
  22. data/lib/riemann/dash/public/keys.js +46 -0
  23. data/lib/riemann/dash/public/mustache.js +597 -0
  24. data/lib/riemann/dash/public/persistence.js +30 -0
  25. data/lib/riemann/dash/public/profile.js +33 -0
  26. data/lib/riemann/dash/public/subs.js +164 -0
  27. data/lib/riemann/dash/public/toastr.css +174 -0
  28. data/lib/riemann/dash/public/toastr.js +207 -0
  29. data/lib/riemann/dash/public/toolbar.js +217 -0
  30. data/lib/riemann/dash/public/underscore-min.js +5 -0
  31. data/lib/riemann/dash/public/util.js +34 -0
  32. data/lib/riemann/dash/public/vendor/smoothie.js +374 -0
  33. data/lib/riemann/dash/public/view.js +704 -0
  34. data/lib/riemann/dash/public/views/gauge.js +76 -0
  35. data/lib/riemann/dash/public/views/grid.js +279 -0
  36. data/lib/riemann/dash/public/views/help.js +28 -0
  37. data/lib/riemann/dash/public/views/timeseries.js +107 -0
  38. data/lib/riemann/dash/public/views/title.js +35 -0
  39. data/lib/riemann/dash/public/x.png +0 -0
  40. data/lib/riemann/dash/rack/static.rb +16 -0
  41. data/lib/riemann/dash/version.rb +4 -0
  42. data/lib/riemann/dash/views/css.scss +393 -0
  43. data/lib/riemann/dash/views/index.erubis +203 -0
  44. data/lib/riemann/dash/views/layout.erubis +21 -0
  45. data/riemann-dash.gemspec +28 -0
  46. data/sh/c +1 -0
  47. data/sh/env.rb +2 -0
  48. data/sh/test +1 -0
  49. data/test/config_test.rb +106 -0
  50. data/test/fixtures/config/basic_config.rb +2 -0
  51. data/test/fixtures/config/ws_config.rb +1 -0
  52. data/test/fixtures/ws_config/dummy_config.json +1 -0
  53. data/test/fixtures/ws_config/pretty_printed_config.json +6 -0
  54. data/test/test_helper.rb +10 -0
  55. metadata +202 -0
@@ -0,0 +1,203 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <title>Riemann</title>
6
+ <link rel="stylesheet" href="/css" type="text/css" />
7
+ <link rel="stylesheet" href="/toastr.css" type="text/css" />
8
+ </head>
9
+ <body>
10
+ <div id="toolbar"></div>
11
+ <div id="view"></div>
12
+ <script type="text/javascript" src="/vendor/smoothie.js"></script>
13
+ <script type="text/javascript" src="/underscore-min.js"></script>
14
+ <script type="text/javascript" src="/jquery-1.7.2.min.js"></script>
15
+ <script type="text/javascript" src="/jquery-ui-1.9.0.custom.min.js"></script>
16
+ <script type="text/javascript" src="/jquery.json-2.2.min.js"></script>
17
+ <script type="text/javascript" src="/jquery.simplemodal.1.4.3.min.js"></script>
18
+ <script type="text/javascript" src="/toastr.js"></script>
19
+ <script type="text/javascript" src="/jquery.quickfit.js"></script>
20
+ <script type="text/javascript" src="/util.js"></script>
21
+ <script type="text/javascript" src="/mustache.js"></script>
22
+ <script src="http://d3js.org/d3.v2.js"></script>
23
+ <script type="text/javascript" src="/profile.js"></script>
24
+ <script type="text/javascript" src="/clock.js"></script>
25
+ <script type="text/javascript" src="/persistence.js"></script>
26
+ <script type="text/javascript" src="/keys.js"></script>
27
+ <script type="text/javascript" src="/subs.js"></script>
28
+ <script type="text/javascript" src="/format.js"></script>
29
+ <script type="text/javascript" src="/toolbar.js"></script>
30
+ <script type="text/javascript" src="/view.js"></script>
31
+ <script type="text/javascript" src="/views/timeseries.js"></script>
32
+ <script type="text/javascript" src="/views/title.js"></script>
33
+ <script type="text/javascript" src="/views/help.js"></script>
34
+ <script type="text/javascript" src="/views/gauge.js"></script>
35
+ <script type="text/javascript" src="/views/grid.js"></script>
36
+ <script type="text/javascript" src="/dash.js"></script>
37
+
38
+ <script type="text/javascript">
39
+ function logTable(container, query) {
40
+ var $container = $(container);
41
+ $container.addClass("log-table");
42
+ $container.append('<input type="text" class="query"></input>');
43
+ var prompt = $container.find('input');
44
+ $container.append('<div class="scroll"><table><thead><tr>' +
45
+ '<th>host</th>' +
46
+ '<th>service</th>' +
47
+ '<th>state</th>' +
48
+ '<th>metric</th>' +
49
+ '<th>description</th>' +
50
+ '</tr></thead><tbody></tbody></table></div>');
51
+ var scroll = $container.find('.scroll');
52
+ var log = $container.find('tbody');
53
+ var sub = null;
54
+ var tracking = true;
55
+
56
+ var template = "<tr><td>{{host}}</td><td>{{service}}</td><td>{{state}}</td><td>{{{metric}}}</td><td>{{description}}</td></tr>";
57
+
58
+ // Are we following the bottom of the log?
59
+ scroll.scroll(function(e) {
60
+ if (scroll.scrollTop() > (log.height() - scroll.height())) {
61
+ tracking = true;
62
+ } else {
63
+ tracking = false;
64
+ }
65
+ });
66
+
67
+ var scrollToBottom = function() {
68
+ scroll.stop().animate({
69
+ scrollTop: (log.height() - scroll.height() + 20)
70
+ }, 1000, "swing");
71
+ }
72
+
73
+ var atBottom = function() {
74
+ console.log(scroll.scrollTop());
75
+ console.log(log.height() - scroll.height());
76
+ return (scroll.scrollTop() > (log.height() - scroll.height()));
77
+ }
78
+
79
+ // Add an event
80
+ var append = function(e) {
81
+ $.extend(e, {
82
+ metric: format.metric(e)
83
+ });
84
+ log.append(Mustache.render(template, e));
85
+ if (tracking) { scrollToBottom() };
86
+ }
87
+
88
+ // Set up our query
89
+ var startQuery = function(query) {
90
+ // Cancel existing sub
91
+ if (sub != null) { sub.close(); }
92
+
93
+ // Subscribe
94
+ sub = subs.subscribe(query, function(e) {
95
+ e.time = d3.time.format.iso.parse(e.time);
96
+ clock.advance(e.time);
97
+ append(e);
98
+ });
99
+ }
100
+
101
+ // Initial subscription
102
+ if (query) { prompt[0].value = query; startQuery(query); }
103
+
104
+ // Prompt entry
105
+ prompt.change(function() { startQuery(this.value) });
106
+ }
107
+
108
+
109
+ function timeSeries(container) {
110
+ // Container
111
+ var $container = $(container);
112
+ var container = d3.select(container);
113
+ $container.append('<input type=\"text\" style="display: block"></input>');
114
+ var prompt = $container.children().last();
115
+
116
+ // Data structures
117
+ var data = [];
118
+ var n = 60;
119
+ var sub = null;
120
+
121
+ // Scale
122
+ var w = 20;
123
+ var h = 80;
124
+
125
+ var x = d3.time.scale()
126
+ .domain([0,1])
127
+ .range([0, w * n]);
128
+ var y = d3.scale.linear()
129
+ .domain([0,100])
130
+ .rangeRound([0,h]);
131
+
132
+ var updateTime = function(max) {
133
+ var min = d3.time.minute.offset(max, -1);
134
+ x.domain([min, max]);
135
+ }
136
+ updateTime(new Date());
137
+
138
+ // Chart itself
139
+ var chart = container.append("svg")
140
+ .attr("class", "timeSeries")
141
+ .attr("width", w * (n - 1))
142
+ .attr("height", h);
143
+
144
+ // Baseline
145
+ chart.append("line")
146
+ .attr("x1", 0)
147
+ .attr("x2", w * n)
148
+ .attr("y1", h - .5)
149
+ .attr("y2", h - .5)
150
+ .style("stroke", "#000");
151
+
152
+ // Subscribe
153
+ prompt.change(function() {
154
+ if (sub != null) { sub.close(); }
155
+
156
+ sub = subscribe(this.value, function(e) {
157
+ // Move time
158
+ e.time = d3.time.format.iso.parse(e.time);
159
+ clock.advance(e.time);
160
+
161
+ // Append to window
162
+ if (data.length >= n) {
163
+ data.shift();
164
+ }
165
+ data.push(e);
166
+
167
+ console.log(e.time, "maps to", x(e.time), "in", x.domain(), x.range());
168
+ });
169
+ });
170
+
171
+ var clockSub = clock.register(function(t) {
172
+ updateTime(t);
173
+
174
+ // Move events
175
+ var rect = chart.selectAll("rect")
176
+ .data(data, function(e) { if (e) { return e.time } });
177
+
178
+ rect.enter().insert("rect", "line")
179
+ .attr("x", function(e, i) {
180
+ return x(e.time) - .5; })
181
+ .attr("y", function(e) { return h - y(e.metric) - .5 })
182
+ .attr("width", w)
183
+ .attr("height", function(e) { return y(e.metric); })
184
+ .transition()
185
+ .duration(1000)
186
+ .attr("x", function(e, i) { return x(e.time) - .5 });
187
+
188
+ rect.transition()
189
+ .duration(1000)
190
+ .attr("x", function(e) { return x(e.time) - .5; });
191
+
192
+ rect.exit().transition()
193
+ .duration(1000)
194
+ .attr("x", function(e) { return x(e.time) - .5 })
195
+ .remove();
196
+ });
197
+
198
+ }
199
+
200
+ dash.reload();
201
+ </script>
202
+ </body>
203
+ </html>
@@ -0,0 +1,21 @@
1
+ <html>
2
+ <head>
3
+ <title>Dashboard</title>
4
+ <link rel="stylesheet" type="text/css" href="/css" />
5
+
6
+ <script type="text/javascript">
7
+ setTimeout(function() {
8
+ location.reload(true);
9
+ }, 10000);
10
+ </script>
11
+ </head>
12
+
13
+ <body onload="refresh();">
14
+ <div>
15
+ <h1>Dashboard</h1>
16
+ <span style="position: absolute; top: 4px; right: 4px;">(as of <%= time Time.now.to_i %>)</span>
17
+ </div>
18
+
19
+ <%= yield %>
20
+ </body>
21
+ </html>
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'riemann/dash/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.rubyforge_project = 'mindreframer-riemann-dash'
8
+
9
+ gem.name = "mindreframer-riemann-dash"
10
+ gem.version = Riemann::Dash::VERSION
11
+ gem.authors = ["Kyle Kingsbury"]
12
+ gem.email = ['aphyr@aphyr.com']
13
+ gem.description = %q{HTTP dashboard for the distributed event system Riemann.}
14
+ gem.summary = gem.description
15
+ gem.homepage = 'https://github.com/aphyr/riemann-dash'
16
+ gem.platform = Gem::Platform::RUBY
17
+
18
+ gem.add_dependency 'riemann-client', '>= 0.0.7'
19
+ gem.add_dependency 'erubis', '>= 2.7.0'
20
+ gem.add_dependency 'sinatra', '>= 1.3.2'
21
+ gem.add_dependency 'sass', '>= 3.1.14'
22
+ gem.add_dependency 'thin', '>= 1.3.1'
23
+ gem.add_dependency 'multi_json', '1.3.6'
24
+ gem.files = `git ls-files`.split($/)
25
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
26
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
27
+ gem.require_paths = ["lib"]
28
+ end
data/sh/c ADDED
@@ -0,0 +1 @@
1
+ irb -r ./sh/env.rb
data/sh/env.rb ADDED
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')))
2
+ require 'riemann/dash'
data/sh/test ADDED
@@ -0,0 +1 @@
1
+ rake
@@ -0,0 +1,106 @@
1
+ require './test/test_helper'
2
+
3
+
4
+ describe "Riemann::Dash::Config" do
5
+ before do
6
+ @config = Riemann::Dash::Config.instance
7
+ end
8
+
9
+ after do
10
+ Riemann::Dash::Config.reset!
11
+ end
12
+
13
+ it "is loaded" do
14
+ @config.wont_be_nil
15
+ end
16
+
17
+ describe :load_config do
18
+ it "will apply configs from specified file to sinatra app" do
19
+ @config.load_config("test/fixtures/config/basic_config.rb")
20
+ Riemann::Dash::App.settings.settings_loaded.must_equal "yes"
21
+ end
22
+
23
+ it "will apply settings from file to self" do
24
+ @config.store[:views].wont_equal "/some/path/to/views"
25
+ @config.load_config("test/fixtures/config/basic_config.rb")
26
+ @config.store[:views].must_equal "/some/path/to/views"
27
+ end
28
+ end
29
+
30
+ describe :setup_default_values do
31
+ it "has controllers path" do
32
+ @config.store[:controllers].first.must_match %r{/lib/riemann/dash/controller}
33
+ @config.store[:controllers].class.must_equal Array
34
+ end
35
+
36
+ it "has view path" do
37
+ @config.store[:views].must_match %r{/lib/riemann/dash/view}
38
+ end
39
+
40
+ it "has public path" do
41
+ @config.store[:public].must_match %r{/lib/riemann/dash/public}
42
+ end
43
+
44
+ it "has workspace config" do
45
+ @config.store[:ws_config].must_match %r{/lib/riemann/config/config.json}
46
+ end
47
+
48
+ end
49
+
50
+ describe "applying to sinatra app" do
51
+ describe :load_controllers do
52
+
53
+ end
54
+
55
+ describe :setup_views do
56
+
57
+ end
58
+
59
+
60
+ describe :setup_public_dir do
61
+
62
+ end
63
+ end
64
+
65
+ describe "workspace config" do
66
+ before do
67
+ FileUtils.rm_rf "test/tmp/"
68
+ end
69
+
70
+ describe :read_ws_config do
71
+ it "retuns hash for empty configs" do
72
+ @config.read_ws_config.must_equal "{}"
73
+ end
74
+
75
+ it "reads the file, if present" do
76
+ @config.load_config("test/fixtures/config/ws_config.rb").must_equal true
77
+ @config.store[:ws_config].must_equal "test/fixtures/ws_config/dummy_config.json"
78
+ @config.read_ws_config.must_equal %Q{{hey: \"ho\"}}
79
+ end
80
+ end
81
+
82
+ describe :update_ws_config do
83
+ it "works" do
84
+ @config.store[:ws_config] = "test/tmp/config.json"
85
+ @config.update_ws_config("{\"server\":\"10.10.10.10\",\"workspaces\":[]}")
86
+ end
87
+
88
+ it "pretty-prints the config" do
89
+ @config.store[:ws_config] = "test/tmp/config.json"
90
+ @config.update_ws_config("{\"server\":\"10.10.10.10\",\"workspaces\":[]}")
91
+ File.read("test/tmp/config.json").must_equal File.read("test/fixtures/ws_config/pretty_printed_config.json")
92
+ end
93
+ end
94
+ end
95
+
96
+ describe "backwards compatible :[] and :[]= forwarders to `store` variable" do
97
+ it "reading works" do
98
+ @config[:ws_config].must_match %r{lib/riemann/config/config.json}
99
+ end
100
+
101
+ it "writing works" do
102
+ @config[:ws_config] = "something"
103
+ @config[:ws_config].must_match %r{something}
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,2 @@
1
+ set :settings_loaded, "yes"
2
+ config.store[:views] = "/some/path/to/views"
@@ -0,0 +1 @@
1
+ config.store[:ws_config] = "test/fixtures/ws_config/dummy_config.json"
@@ -0,0 +1 @@
1
+ {hey: "ho"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "server": "10.10.10.10",
3
+ "workspaces": [
4
+
5
+ ]
6
+ }
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.setup(:default, :test)
4
+
5
+ require 'minitest/autorun'
6
+ require 'minitest/spec'
7
+ #require "mocha/setup"
8
+
9
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
10
+ require 'riemann/dash'
metadata ADDED
@@ -0,0 +1,202 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mindreframer-riemann-dash
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Kyle Kingsbury
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: riemann-client
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.0.7
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.0.7
30
+ - !ruby/object:Gem::Dependency
31
+ name: erubis
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 2.7.0
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 2.7.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: sinatra
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 1.3.2
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.2
62
+ - !ruby/object:Gem::Dependency
63
+ name: sass
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: 3.1.14
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 3.1.14
78
+ - !ruby/object:Gem::Dependency
79
+ name: thin
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 1.3.1
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 1.3.1
94
+ - !ruby/object:Gem::Dependency
95
+ name: multi_json
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - '='
100
+ - !ruby/object:Gem::Version
101
+ version: 1.3.6
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - '='
108
+ - !ruby/object:Gem::Version
109
+ version: 1.3.6
110
+ description: HTTP dashboard for the distributed event system Riemann.
111
+ email:
112
+ - aphyr@aphyr.com
113
+ executables:
114
+ - riemann-dash
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - .gitignore
119
+ - Gemfile
120
+ - Gemfile.lock
121
+ - LICENSE
122
+ - README.markdown
123
+ - Rakefile.rb
124
+ - bin/riemann-dash
125
+ - example/config.rb
126
+ - lib/riemann/dash.rb
127
+ - lib/riemann/dash/app.rb
128
+ - lib/riemann/dash/config.rb
129
+ - lib/riemann/dash/controller/css.rb
130
+ - lib/riemann/dash/controller/index.rb
131
+ - lib/riemann/dash/public/clock.js
132
+ - lib/riemann/dash/public/dash.js
133
+ - lib/riemann/dash/public/format.js
134
+ - lib/riemann/dash/public/jquery-1.7.2.min.js
135
+ - lib/riemann/dash/public/jquery-ui-1.9.0.custom.min.js
136
+ - lib/riemann/dash/public/jquery.json-2.2.min.js
137
+ - lib/riemann/dash/public/jquery.quickfit.js
138
+ - lib/riemann/dash/public/jquery.simplemodal.1.4.3.min.js
139
+ - lib/riemann/dash/public/keys.js
140
+ - lib/riemann/dash/public/mustache.js
141
+ - lib/riemann/dash/public/persistence.js
142
+ - lib/riemann/dash/public/profile.js
143
+ - lib/riemann/dash/public/subs.js
144
+ - lib/riemann/dash/public/toastr.css
145
+ - lib/riemann/dash/public/toastr.js
146
+ - lib/riemann/dash/public/toolbar.js
147
+ - lib/riemann/dash/public/underscore-min.js
148
+ - lib/riemann/dash/public/util.js
149
+ - lib/riemann/dash/public/vendor/smoothie.js
150
+ - lib/riemann/dash/public/view.js
151
+ - lib/riemann/dash/public/views/gauge.js
152
+ - lib/riemann/dash/public/views/grid.js
153
+ - lib/riemann/dash/public/views/help.js
154
+ - lib/riemann/dash/public/views/timeseries.js
155
+ - lib/riemann/dash/public/views/title.js
156
+ - lib/riemann/dash/public/x.png
157
+ - lib/riemann/dash/rack/static.rb
158
+ - lib/riemann/dash/version.rb
159
+ - lib/riemann/dash/views/css.scss
160
+ - lib/riemann/dash/views/index.erubis
161
+ - lib/riemann/dash/views/layout.erubis
162
+ - riemann-dash.gemspec
163
+ - sh/c
164
+ - sh/env.rb
165
+ - sh/test
166
+ - test/config_test.rb
167
+ - test/fixtures/config/basic_config.rb
168
+ - test/fixtures/config/ws_config.rb
169
+ - test/fixtures/ws_config/dummy_config.json
170
+ - test/fixtures/ws_config/pretty_printed_config.json
171
+ - test/test_helper.rb
172
+ homepage: https://github.com/aphyr/riemann-dash
173
+ licenses: []
174
+ post_install_message:
175
+ rdoc_options: []
176
+ require_paths:
177
+ - lib
178
+ required_ruby_version: !ruby/object:Gem::Requirement
179
+ none: false
180
+ requirements:
181
+ - - ! '>='
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ required_rubygems_version: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ requirements: []
191
+ rubyforge_project: mindreframer-riemann-dash
192
+ rubygems_version: 1.8.25
193
+ signing_key:
194
+ specification_version: 3
195
+ summary: HTTP dashboard for the distributed event system Riemann.
196
+ test_files:
197
+ - test/config_test.rb
198
+ - test/fixtures/config/basic_config.rb
199
+ - test/fixtures/config/ws_config.rb
200
+ - test/fixtures/ws_config/dummy_config.json
201
+ - test/fixtures/ws_config/pretty_printed_config.json
202
+ - test/test_helper.rb