batsd-dash 0.3.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/.rbenv-version +1 -0
  2. data/Gemfile +3 -0
  3. data/README.md +36 -79
  4. data/batsd-dash.gemspec +5 -9
  5. data/lib/batsd-dash.rb +9 -80
  6. data/lib/batsd-dash/app.rb +113 -0
  7. data/lib/batsd-dash/connection.rb +54 -0
  8. data/lib/batsd-dash/graph.rb +10 -2
  9. data/lib/batsd-dash/params.rb +10 -2
  10. data/lib/{public → batsd-dash/public}/css/d3.css +199 -100
  11. data/lib/{public → batsd-dash/public}/css/datetimepicker.css +0 -0
  12. data/lib/{public → batsd-dash/public}/css/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  13. data/lib/{public → batsd-dash/public}/css/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  14. data/lib/{public → batsd-dash/public}/css/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  15. data/lib/{public → batsd-dash/public}/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  16. data/lib/{public → batsd-dash/public}/css/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  17. data/lib/{public → batsd-dash/public}/css/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  18. data/lib/{public → batsd-dash/public}/css/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  19. data/lib/{public → batsd-dash/public}/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  20. data/lib/{public → batsd-dash/public}/css/images/ui-icons_222222_256x240.png +0 -0
  21. data/lib/{public → batsd-dash/public}/css/images/ui-icons_2e83ff_256x240.png +0 -0
  22. data/lib/{public → batsd-dash/public}/css/images/ui-icons_454545_256x240.png +0 -0
  23. data/lib/{public → batsd-dash/public}/css/images/ui-icons_888888_256x240.png +0 -0
  24. data/lib/{public → batsd-dash/public}/css/images/ui-icons_cd0a0a_256x240.png +0 -0
  25. data/lib/{public → batsd-dash/public}/css/jquery-ui.css +0 -0
  26. data/lib/batsd-dash/public/css/public.css +419 -0
  27. data/lib/batsd-dash/public/js/d3.js +4 -0
  28. data/lib/batsd-dash/public/js/dash.js +82 -0
  29. data/lib/{public → batsd-dash/public}/js/datetimepicker.js +0 -0
  30. data/lib/{public → batsd-dash/public}/js/datetimepicker.js~ +0 -0
  31. data/lib/{public → batsd-dash/public}/js/jquery-ui.js +0 -0
  32. data/lib/{public → batsd-dash/public}/js/jquery.js +0 -0
  33. data/lib/batsd-dash/public/js/nv.d3.js +5 -0
  34. data/lib/batsd-dash/version.rb +4 -2
  35. data/lib/{views → batsd-dash/views}/layout.haml +24 -6
  36. data/lib/batsd-dash/views/loading.haml +5 -0
  37. data/lib/batsd-dash/views/missing.haml +14 -0
  38. data/lib/batsd-dash/views/root.haml +37 -0
  39. data/lib/batsd-dash/views/view.haml +60 -0
  40. data/lib/sass/_charts.scss +37 -0
  41. data/lib/{batsd-dash/sass → sass}/public.scss +102 -27
  42. data/test/helper.rb +5 -16
  43. data/test/test_dash.rb +65 -69
  44. metadata +121 -101
  45. data/lib/batsd-dash/connection_pool.rb +0 -87
  46. data/lib/public/css/public.css +0 -106
  47. data/lib/public/js/d3.js +0 -4
  48. data/lib/public/js/dash.js +0 -110
  49. data/lib/public/js/flot.js +0 -6
  50. data/lib/public/js/nv.d3.js +0 -4
  51. data/lib/views/missing.haml +0 -6
  52. data/lib/views/root.haml +0 -0
  53. data/lib/views/view.haml +0 -18
  54. data/test/test_connection_pool.rb +0 -20
data/test/helper.rb CHANGED
@@ -1,5 +1,3 @@
1
- require 'turn'
2
- require 'mocha'
3
1
  require 'sinatra/test_helpers'
4
2
  require 'minitest/autorun'
5
3
  require 'rack/test'
@@ -7,25 +5,14 @@ require 'rack/test'
7
5
  ENV['RACK_ENV'] = 'test'
8
6
  include Rack::Test::Methods
9
7
 
10
- # require the app itself
11
8
  require 'batsd-dash'
12
-
13
- # setup a MockSesion
14
- module Rack
15
- class MockSession
16
- alias_method :request_original, :request
17
- def request(uri, env)
18
- EM.synchrony { EM.next_tick { request_original(uri, env); EM.stop } }
19
- end
20
- end
21
- end
22
-
9
+ require 'batsd-dash/app'
23
10
 
24
11
  class MiniTest::Spec
25
12
  after { mocha_teardown }
26
13
 
27
14
  def app
28
- BatsdDash::App
15
+ Batsd::Dash::App
29
16
  end
30
17
 
31
18
  def json_response
@@ -33,9 +20,11 @@ class MiniTest::Spec
33
20
 
34
21
  if oid != @last_response_id
35
22
  @last_response_id = oid
36
- @last_response_json_body = Yajl::Parser.parse(last_response.body, symbolize_keys: true) rescue nil
23
+ @last_response_json_body = JSON.parse(last_response.body, symbolize_names: true) rescue nil
37
24
  end
38
25
 
39
26
  @last_response_json_body
40
27
  end
41
28
  end
29
+
30
+ require 'mocha/setup'
data/test/test_dash.rb CHANGED
@@ -1,99 +1,95 @@
1
1
  require 'helper'
2
2
 
3
- describe BatsdDash::App do
4
- before do
5
- header 'Accept', 'application/json'
3
+ describe Batsd::Dash::App do
4
+ before do
5
+ header 'Accept', 'application/json'
6
6
 
7
- # batsd wouldn't return this much data but w/e
8
- df = EventMachine::DefaultDeferrable.new
9
- df.succeed 'interval' => 10, 'counters:a.b' => [], 'timers:c.d' => [], 'gauges:e.f' => []
7
+ # batsd wouldn't return this much data but w/e
8
+ values = { 'interval' => 10, 'counters:a.b' => [], 'timers:c.d' => [], 'gauges:e.f' => [] }
10
9
 
11
- BatsdDash::ConnectionPool::Client.any_instance.stubs(:sync).returns(true)
12
- BatsdDash::ConnectionPool::Client.any_instance.stubs(:unbind).returns(true)
10
+ Batsd::Dash::Connection.any_instance.stubs(:values).returns(values)
11
+ end
13
12
 
14
- EM::Synchrony::ConnectionPool.any_instance.stubs(:async_values).returns(df)
15
- end
13
+ it 'returns error on nil metrics' do
14
+ get '/data'
16
15
 
17
- it 'returns error on nil metrics' do
18
- get '/data'
16
+ last_response.status.must_equal 400
17
+ last_response.body.must_include 'error'
18
+ end
19
19
 
20
- last_response.status.must_equal 400
21
- last_response.body.must_include 'error'
22
- end
20
+ it 'returns error on empty metrics' do
21
+ get '/data?counters[]='
23
22
 
24
- it 'returns error on empty metrics' do
25
- get '/data?counters[]='
23
+ last_response.status.must_equal 400
24
+ last_response.body.must_include 'error'
25
+ end
26
26
 
27
- last_response.status.must_equal 400
28
- last_response.body.must_include 'error'
29
- end
27
+ it 'valid with counter param' do
28
+ get '/data?counters=a.b'
30
29
 
31
- it 'valid with counter param' do
32
- get '/data?counters=a.b'
30
+ last_response.status.must_equal 200
31
+ last_response.body.wont_be_empty
33
32
 
34
- last_response.status.must_equal 200
35
- last_response.body.wont_be_empty
33
+ json_response[:results].size.must_equal 1
34
+ end
36
35
 
37
- json_response[:results].size.must_equal 1
38
- end
36
+ it 'valid with timer param' do
37
+ get '/data?timers=c.d'
39
38
 
40
- it 'valid with timer param' do
41
- get '/data?timers=c.d'
39
+ last_response.status.must_equal 200
40
+ last_response.body.wont_be_empty
42
41
 
43
- last_response.status.must_equal 200
44
- last_response.body.wont_be_empty
42
+ json_response[:results].size.must_equal 1
43
+ end
45
44
 
46
- json_response[:results].size.must_equal 1
47
- end
45
+ it 'valid with gauge param' do
46
+ get '/data?gauges=e.f'
48
47
 
49
- it 'valid with gauge param' do
50
- get '/data?gauges=e.f'
48
+ last_response.status.must_equal 200
49
+ last_response.body.wont_be_empty
51
50
 
52
- last_response.status.must_equal 200
53
- last_response.body.wont_be_empty
51
+ json_response[:results].size.must_equal 1
52
+ end
54
53
 
55
- json_response[:results].size.must_equal 1
56
- end
54
+ it 'valid with multiple' do
55
+ get '/data?counters[]=a.b&timers[]=d.c&gauges[]=e.f'
57
56
 
58
- it 'valid with multiple' do
59
- get '/data?counters[]=a.b&timers[]=d.c&gauges[]=e.f'
57
+ last_response.status.must_equal 200
58
+ last_response.body.wont_be_empty
60
59
 
61
- last_response.status.must_equal 200
62
- last_response.body.wont_be_empty
60
+ json_response[:results].size.must_equal 3
61
+ end
63
62
 
64
- json_response[:results].size.must_equal 3
65
- end
63
+ describe 'range params' do
64
+ before do
65
+ @start = Time.now.to_i - 86000
66
+ @stop = Time.now.to_i
67
+ end
66
68
 
67
- describe 'range params' do
68
- before do
69
- @start = Time.now.to_i - 86000
70
- @stop = Time.now.to_i
71
- end
69
+ it 'returns error without stop param' do
70
+ get "/data?counters[]=a.b&start=#{@start}"
72
71
 
73
- it 'returns error without stop param' do
74
- get "/data?counters[]=a.b&start=#{@start}"
72
+ last_response.status.must_equal 400
73
+ last_response.body.must_include 'error'
74
+ end
75
75
 
76
- last_response.status.must_equal 400
77
- last_response.body.must_include 'error'
78
- end
76
+ it 'returns error without start param' do
77
+ get "/data?counters[]=a.b&stop=#{@stop}"
79
78
 
80
- it 'returns error without start param' do
81
- get "/data?counters[]=a.b&stop=#{@stop}"
79
+ last_response.status.must_equal 400
80
+ last_response.body.must_include 'error'
81
+ end
82
82
 
83
- last_response.status.must_equal 400
84
- last_response.body.must_include 'error'
85
- end
83
+ it 'returns error on invalid range' do
84
+ get "/data?counters[]=a.b&start=#{@stop}&stop=#{@start}"
86
85
 
87
- it 'returns error on invalid range' do
88
- get "/data?counters[]=a.b&start=#{@stop}&stop=#{@start}"
86
+ last_response.status.must_equal 400
87
+ last_response.body.must_include 'error'
89
88
 
90
- last_response.status.must_equal 400
91
- last_response.body.must_include 'error'
89
+ get '/data?counters[]=a.b&start=-2&stop=-1'
92
90
 
93
- get '/data?counters[]=a.b&start=-2&stop=-1'
94
-
95
- last_response.status.must_equal 400
96
- last_response.body.must_include 'error'
97
- end
98
- end
91
+ last_response.status.must_equal 400
92
+ last_response.body.must_include 'error'
93
+ end
94
+ end
99
95
  end
metadata CHANGED
@@ -1,127 +1,143 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: batsd-dash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
5
- prerelease:
4
+ prerelease:
5
+ version: 0.5.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - mikeycgto
9
9
  - btoconnor
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-08-13 00:00:00.000000000Z
13
+ date: 2013-03-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: sinatra
17
- requirement: &18453260 !ruby/object:Gem::Requirement
18
- none: false
16
+ name: connection_pool
17
+ version_requirements: !ruby/object:Gem::Requirement
19
18
  requirements:
20
19
  - - ! '>='
21
20
  - !ruby/object:Gem::Version
22
- version: '0'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: *18453260
26
- - !ruby/object:Gem::Dependency
27
- name: sinatra-contrib
28
- requirement: &18434360 !ruby/object:Gem::Requirement
21
+ version: !binary |-
22
+ MA==
29
23
  none: false
24
+ requirement: !ruby/object:Gem::Requirement
30
25
  requirements:
31
26
  - - ! '>='
32
27
  - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
28
+ version: !binary |-
29
+ MA==
30
+ none: false
35
31
  prerelease: false
36
- version_requirements: *18434360
32
+ type: :runtime
37
33
  - !ruby/object:Gem::Dependency
38
- name: sinatra-synchrony
39
- requirement: &18431700 !ruby/object:Gem::Requirement
34
+ name: sinatra
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: !binary |-
40
+ MA==
40
41
  none: false
42
+ requirement: !ruby/object:Gem::Requirement
41
43
  requirements:
42
- - - ~>
44
+ - - ! '>='
43
45
  - !ruby/object:Gem::Version
44
- version: 0.3.2
45
- type: :runtime
46
+ version: !binary |-
47
+ MA==
48
+ none: false
46
49
  prerelease: false
47
- version_requirements: *18431700
50
+ type: :runtime
48
51
  - !ruby/object:Gem::Dependency
49
52
  name: haml
50
- requirement: &18430480 !ruby/object:Gem::Requirement
51
- none: false
53
+ version_requirements: !ruby/object:Gem::Requirement
52
54
  requirements:
53
55
  - - ! '>='
54
56
  - !ruby/object:Gem::Version
55
- version: '0'
56
- type: :runtime
57
- prerelease: false
58
- version_requirements: *18430480
59
- - !ruby/object:Gem::Dependency
60
- name: yajl-ruby
61
- requirement: &18428960 !ruby/object:Gem::Requirement
57
+ version: !binary |-
58
+ MA==
62
59
  none: false
60
+ requirement: !ruby/object:Gem::Requirement
63
61
  requirements:
64
62
  - - ! '>='
65
63
  - !ruby/object:Gem::Version
66
- version: '0'
67
- type: :runtime
64
+ version: !binary |-
65
+ MA==
66
+ none: false
68
67
  prerelease: false
69
- version_requirements: *18428960
68
+ type: :runtime
70
69
  - !ruby/object:Gem::Dependency
71
70
  name: rake
72
- requirement: &18426900 !ruby/object:Gem::Requirement
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: !binary |-
76
+ MA==
73
77
  none: false
78
+ requirement: !ruby/object:Gem::Requirement
74
79
  requirements:
75
80
  - - ! '>='
76
81
  - !ruby/object:Gem::Version
77
- version: '0'
78
- type: :development
82
+ version: !binary |-
83
+ MA==
84
+ none: false
79
85
  prerelease: false
80
- version_requirements: *18426900
86
+ type: :development
81
87
  - !ruby/object:Gem::Dependency
82
88
  name: minitest
83
- requirement: &18422820 !ruby/object:Gem::Requirement
84
- none: false
89
+ version_requirements: !ruby/object:Gem::Requirement
85
90
  requirements:
86
91
  - - ! '>='
87
92
  - !ruby/object:Gem::Version
88
- version: '0'
89
- type: :development
90
- prerelease: false
91
- version_requirements: *18422820
92
- - !ruby/object:Gem::Dependency
93
- name: mocha
94
- requirement: &18419360 !ruby/object:Gem::Requirement
93
+ version: !binary |-
94
+ MA==
95
95
  none: false
96
+ requirement: !ruby/object:Gem::Requirement
96
97
  requirements:
97
98
  - - ! '>='
98
99
  - !ruby/object:Gem::Version
99
- version: '0'
100
- type: :development
100
+ version: !binary |-
101
+ MA==
102
+ none: false
101
103
  prerelease: false
102
- version_requirements: *18419360
104
+ type: :development
103
105
  - !ruby/object:Gem::Dependency
104
- name: turn
105
- requirement: &18407960 !ruby/object:Gem::Requirement
106
+ name: sinatra-contrib
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: !binary |-
112
+ MA==
106
113
  none: false
114
+ requirement: !ruby/object:Gem::Requirement
107
115
  requirements:
108
116
  - - ! '>='
109
117
  - !ruby/object:Gem::Version
110
- version: '0'
111
- type: :development
118
+ version: !binary |-
119
+ MA==
120
+ none: false
112
121
  prerelease: false
113
- version_requirements: *18407960
122
+ type: :development
114
123
  - !ruby/object:Gem::Dependency
115
- name: thin
116
- requirement: &18402940 !ruby/object:Gem::Requirement
124
+ name: mocha
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
129
+ version: !binary |-
130
+ MA==
117
131
  none: false
132
+ requirement: !ruby/object:Gem::Requirement
118
133
  requirements:
119
134
  - - ! '>='
120
135
  - !ruby/object:Gem::Version
121
- version: '0'
122
- type: :development
136
+ version: !binary |-
137
+ MA==
138
+ none: false
123
139
  prerelease: false
124
- version_requirements: *18402940
140
+ type: :development
125
141
  description: batsd-dash - graphs and stuff for batsd. yay!
126
142
  email:
127
143
  - mikeycgto@gmail.com
@@ -130,72 +146,76 @@ executables: []
130
146
  extensions: []
131
147
  extra_rdoc_files: []
132
148
  files:
149
+ - .rbenv-version
133
150
  - Gemfile
134
151
  - Guardfile
135
152
  - README.md
136
153
  - Rakefile
137
154
  - batsd-dash.gemspec
138
155
  - lib/batsd-dash.rb
139
- - lib/batsd-dash/connection_pool.rb
156
+ - lib/batsd-dash/app.rb
157
+ - lib/batsd-dash/connection.rb
140
158
  - lib/batsd-dash/graph.rb
141
159
  - lib/batsd-dash/params.rb
142
- - lib/batsd-dash/sass/public.scss
160
+ - lib/batsd-dash/public/css/d3.css
161
+ - lib/batsd-dash/public/css/datetimepicker.css
162
+ - lib/batsd-dash/public/css/images/ui-bg_flat_0_aaaaaa_40x100.png
163
+ - lib/batsd-dash/public/css/images/ui-bg_flat_75_ffffff_40x100.png
164
+ - lib/batsd-dash/public/css/images/ui-bg_glass_55_fbf9ee_1x400.png
165
+ - lib/batsd-dash/public/css/images/ui-bg_glass_65_ffffff_1x400.png
166
+ - lib/batsd-dash/public/css/images/ui-bg_glass_75_dadada_1x400.png
167
+ - lib/batsd-dash/public/css/images/ui-bg_glass_75_e6e6e6_1x400.png
168
+ - lib/batsd-dash/public/css/images/ui-bg_glass_95_fef1ec_1x400.png
169
+ - lib/batsd-dash/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png
170
+ - lib/batsd-dash/public/css/images/ui-icons_222222_256x240.png
171
+ - lib/batsd-dash/public/css/images/ui-icons_2e83ff_256x240.png
172
+ - lib/batsd-dash/public/css/images/ui-icons_454545_256x240.png
173
+ - lib/batsd-dash/public/css/images/ui-icons_888888_256x240.png
174
+ - lib/batsd-dash/public/css/images/ui-icons_cd0a0a_256x240.png
175
+ - lib/batsd-dash/public/css/jquery-ui.css
176
+ - lib/batsd-dash/public/css/public.css
177
+ - lib/batsd-dash/public/js/d3.js
178
+ - lib/batsd-dash/public/js/dash.js
179
+ - lib/batsd-dash/public/js/datetimepicker.js
180
+ - lib/batsd-dash/public/js/datetimepicker.js~
181
+ - lib/batsd-dash/public/js/jquery-ui.js
182
+ - lib/batsd-dash/public/js/jquery.js
183
+ - lib/batsd-dash/public/js/nv.d3.js
143
184
  - lib/batsd-dash/version.rb
144
- - lib/public/css/d3.css
145
- - lib/public/css/datetimepicker.css
146
- - lib/public/css/images/ui-bg_flat_0_aaaaaa_40x100.png
147
- - lib/public/css/images/ui-bg_flat_75_ffffff_40x100.png
148
- - lib/public/css/images/ui-bg_glass_55_fbf9ee_1x400.png
149
- - lib/public/css/images/ui-bg_glass_65_ffffff_1x400.png
150
- - lib/public/css/images/ui-bg_glass_75_dadada_1x400.png
151
- - lib/public/css/images/ui-bg_glass_75_e6e6e6_1x400.png
152
- - lib/public/css/images/ui-bg_glass_95_fef1ec_1x400.png
153
- - lib/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png
154
- - lib/public/css/images/ui-icons_222222_256x240.png
155
- - lib/public/css/images/ui-icons_2e83ff_256x240.png
156
- - lib/public/css/images/ui-icons_454545_256x240.png
157
- - lib/public/css/images/ui-icons_888888_256x240.png
158
- - lib/public/css/images/ui-icons_cd0a0a_256x240.png
159
- - lib/public/css/jquery-ui.css
160
- - lib/public/css/public.css
161
- - lib/public/js/d3.js
162
- - lib/public/js/dash.js
163
- - lib/public/js/datetimepicker.js
164
- - lib/public/js/datetimepicker.js~
165
- - lib/public/js/flot.js
166
- - lib/public/js/jquery-ui.js
167
- - lib/public/js/jquery.js
168
- - lib/public/js/nv.d3.js
169
- - lib/views/layout.haml
170
- - lib/views/missing.haml
171
- - lib/views/root.haml
172
- - lib/views/view.haml
185
+ - lib/batsd-dash/views/layout.haml
186
+ - lib/batsd-dash/views/loading.haml
187
+ - lib/batsd-dash/views/missing.haml
188
+ - lib/batsd-dash/views/root.haml
189
+ - lib/batsd-dash/views/view.haml
190
+ - lib/sass/_charts.scss
191
+ - lib/sass/public.scss
173
192
  - test/helper.rb
174
- - test/test_connection_pool.rb
175
193
  - test/test_dash.rb
176
194
  homepage: https://github.com/mikeycgto/batsd-dash
177
195
  licenses: []
178
- post_install_message:
196
+ post_install_message:
179
197
  rdoc_options: []
180
198
  require_paths:
181
199
  - lib
182
200
  required_ruby_version: !ruby/object:Gem::Requirement
183
- none: false
184
201
  requirements:
185
202
  - - ! '>='
186
203
  - !ruby/object:Gem::Version
187
- version: '0'
188
- required_rubygems_version: !ruby/object:Gem::Requirement
204
+ version: !binary |-
205
+ MA==
189
206
  none: false
207
+ required_rubygems_version: !ruby/object:Gem::Requirement
190
208
  requirements:
191
209
  - - ! '>='
192
210
  - !ruby/object:Gem::Version
193
- version: '0'
211
+ version: !binary |-
212
+ MA==
213
+ none: false
194
214
  requirements: []
195
215
  rubyforge_project: batsd-dash
196
- rubygems_version: 1.8.10
197
- signing_key:
216
+ rubygems_version: 1.8.24
217
+ signing_key:
198
218
  specification_version: 3
199
219
  summary: batsd-dash
200
220
  test_files: []
201
- has_rdoc:
221
+ has_rdoc: