app_status 0.1.0

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.
Files changed (64) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +115 -0
  3. data/Rakefile +39 -0
  4. data/app/assets/javascripts/app_status/application.js +15 -0
  5. data/app/assets/stylesheets/app_status/application.css +13 -0
  6. data/app/controllers/app_status/application_controller.rb +4 -0
  7. data/app/controllers/app_status/status_controller.rb +13 -0
  8. data/app/helpers/app_status/application_helper.rb +4 -0
  9. data/app/models/app_status/check_collection.rb +106 -0
  10. data/app/views/app_status/status/index.html.haml +16 -0
  11. data/app/views/layouts/app_status/application.html.erb +14 -0
  12. data/bin/autospec +16 -0
  13. data/bin/erubis +16 -0
  14. data/bin/haml +16 -0
  15. data/bin/htmldiff +16 -0
  16. data/bin/ldiff +16 -0
  17. data/bin/rackup +16 -0
  18. data/bin/rails +16 -0
  19. data/bin/rake +16 -0
  20. data/bin/rdoc +16 -0
  21. data/bin/ri +16 -0
  22. data/bin/rspec +16 -0
  23. data/bin/sprockets +16 -0
  24. data/bin/thor +16 -0
  25. data/bin/tilt +16 -0
  26. data/bin/tt +16 -0
  27. data/config/routes.rb +4 -0
  28. data/lib/app_status/engine.rb +12 -0
  29. data/lib/app_status/version.rb +3 -0
  30. data/lib/app_status.rb +5 -0
  31. data/lib/tasks/app_status_tasks.rb +4 -0
  32. data/spec/controllers/status_controller_spec.rb +29 -0
  33. data/spec/dummy/README.rdoc +261 -0
  34. data/spec/dummy/Rakefile +7 -0
  35. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  36. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  37. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  38. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  39. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  40. data/spec/dummy/config/application.rb +65 -0
  41. data/spec/dummy/config/boot.rb +10 -0
  42. data/spec/dummy/config/database.yml +25 -0
  43. data/spec/dummy/config/environment.rb +5 -0
  44. data/spec/dummy/config/environments/development.rb +37 -0
  45. data/spec/dummy/config/environments/production.rb +67 -0
  46. data/spec/dummy/config/environments/test.rb +37 -0
  47. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  48. data/spec/dummy/config/initializers/inflections.rb +15 -0
  49. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  50. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  51. data/spec/dummy/config/initializers/session_store.rb +8 -0
  52. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  53. data/spec/dummy/config/locales/en.yml +5 -0
  54. data/spec/dummy/config/routes.rb +4 -0
  55. data/spec/dummy/config.ru +4 -0
  56. data/spec/dummy/log/test.log +43 -0
  57. data/spec/dummy/public/404.html +26 -0
  58. data/spec/dummy/public/422.html +26 -0
  59. data/spec/dummy/public/500.html +25 -0
  60. data/spec/dummy/public/favicon.ico +0 -0
  61. data/spec/dummy/script/rails +6 -0
  62. data/spec/models/check_collection_spec.rb +105 -0
  63. data/spec/spec_helper.rb +18 -0
  64. metadata +243 -0
@@ -0,0 +1,5 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ hello: "Hello world"
@@ -0,0 +1,4 @@
1
+ Rails.application.routes.draw do
2
+
3
+ mount AppStatus::Engine => "/status"
4
+ end
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run Dummy::Application
@@ -0,0 +1,43 @@
1
+ Processing by AppStatus::StatusController#index as JSON
2
+ Completed 200 OK in 1ms (Views: 0.3ms)
3
+ Processing by AppStatus::StatusController#index as HTML
4
+ Completed 200 OK in 5ms (Views: 5.2ms)
5
+ Processing by AppStatus::StatusController#index as JSON
6
+ Completed 200 OK in 0ms (Views: 0.3ms)
7
+ Processing by AppStatus::StatusController#index as HTML
8
+ Completed 200 OK in 5ms (Views: 5.3ms)
9
+ Processing by AppStatus::StatusController#index as JSON
10
+ Completed 200 OK in 0ms (Views: 0.3ms)
11
+ Processing by AppStatus::StatusController#index as HTML
12
+ Completed 200 OK in 5ms (Views: 5.1ms)
13
+ Processing by AppStatus::StatusController#index as HTML
14
+ Rendered /Users/alex/Code/ted/app_status/app/views/app_status/status/index.html.haml within layouts/app_status/application (0.1ms)
15
+ Completed 200 OK in 5ms (Views: 5.0ms)
16
+ Processing by AppStatus::StatusController#index as JSON
17
+ Completed 200 OK in 0ms (Views: 0.2ms)
18
+ Processing by AppStatus::StatusController#index as JSON
19
+ Completed 200 OK in 0ms (Views: 0.3ms)
20
+ Processing by AppStatus::StatusController#index as HTML
21
+ Completed 200 OK in 17ms (Views: 16.7ms)
22
+ Processing by AppStatus::StatusController#index as HTML
23
+ Rendered /Users/alex/Code/ted/app_status/app/views/app_status/status/index.html.haml within layouts/app_status/application (0.1ms)
24
+ Completed 200 OK in 17ms (Views: 16.7ms)
25
+ Processing by AppStatus::StatusController#index as JSON
26
+ Completed 200 OK in 0ms (Views: 0.3ms)
27
+ Processing by AppStatus::StatusController#index as HTML
28
+ Rendered /Users/alex/Code/ted/app_status/app/views/app_status/status/index.html.haml within layouts/app_status/application (0.2ms)
29
+ Completed 200 OK in 16ms (Views: 16.0ms)
30
+ Processing by AppStatus::StatusController#index as JSON
31
+ Completed 200 OK in 0ms (Views: 0.2ms)
32
+ Processing by AppStatus::StatusController#index as JSON
33
+ Completed 200 OK in 0ms (Views: 0.3ms)
34
+ Processing by AppStatus::StatusController#index as HTML
35
+ Completed 200 OK in 17ms (Views: 16.6ms)
36
+ Processing by AppStatus::StatusController#index as JSON
37
+ Completed 200 OK in 1ms (Views: 0.3ms)
38
+ Processing by AppStatus::StatusController#index as HTML
39
+ Completed 200 OK in 19ms (Views: 19.3ms)
40
+ Processing by AppStatus::StatusController#index as JSON
41
+ Completed 200 OK in 1ms (Views: 0.3ms)
42
+ Processing by AppStatus::StatusController#index as HTML
43
+ Completed 200 OK in 18ms (Views: 17.4ms)
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,105 @@
1
+ require 'spec_helper'
2
+
3
+ describe AppStatus::CheckCollection do
4
+
5
+ before(:each) do
6
+ AppStatus::CheckCollection.clear_checks!
7
+ end
8
+
9
+ describe "add" do
10
+
11
+ describe "validations" do
12
+ it "should raise an error if :name is not supplied" do
13
+ AppStatus::CheckCollection.configure {|c| c.add status: :ok }
14
+ c = AppStatus::CheckCollection.new
15
+ expect {
16
+ c.evaluate!
17
+ }.to raise_error(ArgumentError, ":name option is required.")
18
+ end
19
+
20
+ it "should raise an error if :status is not supplied" do
21
+ AppStatus::CheckCollection.configure {|c| c.add name: 'foo' }
22
+ c = AppStatus::CheckCollection.new
23
+ expect {
24
+ c.evaluate!
25
+ }.to raise_error(ArgumentError, ":status option is required.")
26
+ end
27
+
28
+ it "should raise an error if an unrecognized option is supplied" do
29
+ AppStatus::CheckCollection.configure {|c| c.add name: 'foo', status: :ok, glork: '', ping: '' }
30
+ c = AppStatus::CheckCollection.new
31
+ expect {
32
+ c.evaluate!
33
+ }.to raise_error(ArgumentError, "Unrecognized option(s) for 'foo' check: glork,ping")
34
+ end
35
+
36
+ it "should raise an error if :status is unrecognized" do
37
+ AppStatus::CheckCollection.configure {|c| c.add name: 'foo', status: 'test' }
38
+ c = AppStatus::CheckCollection.new
39
+ expect {
40
+ c.evaluate!
41
+ }.to raise_error(ArgumentError, "'test' is not a valid status for check 'foo'.")
42
+ end
43
+
44
+ it "should raise an error if a :name is used multiple times" do
45
+ AppStatus::CheckCollection.configure do |c|
46
+ c.add name: 'foo', status: :ok
47
+ c.add name: 'foo', status: :critical
48
+ end
49
+ c = AppStatus::CheckCollection.new
50
+ expect {
51
+ c.evaluate!
52
+ }.to raise_error(ArgumentError, "Check name 'foo' has already been added.")
53
+ end
54
+ end
55
+
56
+ end
57
+
58
+ describe "evaluate!" do
59
+ it "should run configured checks each time it is called" do
60
+ counter = 0
61
+ check = lambda { counter += 1; counter }
62
+ AppStatus::CheckCollection.configure do |c|
63
+ num_calls = check.call
64
+ c.add name: 'something', status: :ok, details: num_calls
65
+ end
66
+
67
+ c = AppStatus::CheckCollection.new
68
+
69
+ Timecop.freeze '2013-10-04T12:00:00Z' do
70
+ c.evaluate!
71
+ c.as_json[:finished].should eq '2013-10-04T12:00:00Z'
72
+ c.as_json[:checks][:something][:details].should eq "1"
73
+ end
74
+
75
+ Timecop.freeze '2013-10-04T01:00:00Z' do
76
+ c.evaluate!
77
+ c.as_json[:finished].should eq '2013-10-04T01:00:00Z'
78
+ c.as_json[:checks][:something][:details].should eq "2"
79
+ end
80
+ end
81
+ end
82
+
83
+ describe "as_json" do
84
+ it "should use :unknown status if no checks are configured" do
85
+ c = AppStatus::CheckCollection.new
86
+ c.evaluate!
87
+ data = c.as_json
88
+
89
+ data[:status].should eq :unknown
90
+ data[:checks].should eq({})
91
+ end
92
+ end
93
+
94
+ describe "configure" do
95
+ it "should add checks to be evaluated later" do
96
+ AppStatus::CheckCollection.configure do |c|
97
+ c.add name: 'something', status: :ok
98
+ end
99
+
100
+ c = AppStatus::CheckCollection.new
101
+ c.evaluate!
102
+ data = c.as_json
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,18 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+
3
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
4
+ require 'rspec/rails'
5
+ require 'rspec/autorun'
6
+ require 'timecop'
7
+
8
+ Rails.backtrace_cleaner.remove_silencers!
9
+
10
+ # Load support files
11
+ #Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
12
+
13
+ RSpec.configure do |config|
14
+ config.mock_with :rspec
15
+ #config.use_transactional_fixtures = true
16
+ config.infer_base_class_for_anonymous_controllers = false
17
+ config.order = "random"
18
+ end
metadata ADDED
@@ -0,0 +1,243 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: app_status
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Alex Dean
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.13
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: 3.2.13
30
+ - !ruby/object:Gem::Dependency
31
+ name: haml
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '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: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: haml-rails
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
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: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec-rails
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: '2.6'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '2.6'
94
+ - !ruby/object:Gem::Dependency
95
+ name: timecop
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ description: AppStatus provides a URL which is easily consumable by Nagios or other
111
+ monitoring tools.
112
+ email:
113
+ - alex@crackpot.org
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - app/assets/javascripts/app_status/application.js
119
+ - app/assets/stylesheets/app_status/application.css
120
+ - app/controllers/app_status/application_controller.rb
121
+ - app/controllers/app_status/status_controller.rb
122
+ - app/helpers/app_status/application_helper.rb
123
+ - app/models/app_status/check_collection.rb
124
+ - app/views/app_status/status/index.html.haml
125
+ - app/views/layouts/app_status/application.html.erb
126
+ - bin/autospec
127
+ - bin/erubis
128
+ - bin/haml
129
+ - bin/htmldiff
130
+ - bin/ldiff
131
+ - bin/rackup
132
+ - bin/rails
133
+ - bin/rake
134
+ - bin/rdoc
135
+ - bin/ri
136
+ - bin/rspec
137
+ - bin/sprockets
138
+ - bin/thor
139
+ - bin/tilt
140
+ - bin/tt
141
+ - config/routes.rb
142
+ - lib/app_status/engine.rb
143
+ - lib/app_status/version.rb
144
+ - lib/app_status.rb
145
+ - lib/tasks/app_status_tasks.rb
146
+ - MIT-LICENSE
147
+ - Rakefile
148
+ - README.md
149
+ - spec/controllers/status_controller_spec.rb
150
+ - spec/dummy/app/assets/javascripts/application.js
151
+ - spec/dummy/app/assets/stylesheets/application.css
152
+ - spec/dummy/app/controllers/application_controller.rb
153
+ - spec/dummy/app/helpers/application_helper.rb
154
+ - spec/dummy/app/views/layouts/application.html.erb
155
+ - spec/dummy/config/application.rb
156
+ - spec/dummy/config/boot.rb
157
+ - spec/dummy/config/database.yml
158
+ - spec/dummy/config/environment.rb
159
+ - spec/dummy/config/environments/development.rb
160
+ - spec/dummy/config/environments/production.rb
161
+ - spec/dummy/config/environments/test.rb
162
+ - spec/dummy/config/initializers/backtrace_silencers.rb
163
+ - spec/dummy/config/initializers/inflections.rb
164
+ - spec/dummy/config/initializers/mime_types.rb
165
+ - spec/dummy/config/initializers/secret_token.rb
166
+ - spec/dummy/config/initializers/session_store.rb
167
+ - spec/dummy/config/initializers/wrap_parameters.rb
168
+ - spec/dummy/config/locales/en.yml
169
+ - spec/dummy/config/routes.rb
170
+ - spec/dummy/config.ru
171
+ - spec/dummy/log/test.log
172
+ - spec/dummy/public/404.html
173
+ - spec/dummy/public/422.html
174
+ - spec/dummy/public/500.html
175
+ - spec/dummy/public/favicon.ico
176
+ - spec/dummy/Rakefile
177
+ - spec/dummy/README.rdoc
178
+ - spec/dummy/script/rails
179
+ - spec/models/check_collection_spec.rb
180
+ - spec/spec_helper.rb
181
+ homepage: http://github.com/alexdean/app_status
182
+ licenses: []
183
+ post_install_message:
184
+ rdoc_options: []
185
+ require_paths:
186
+ - lib
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ none: false
189
+ requirements:
190
+ - - ! '>='
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ segments:
194
+ - 0
195
+ hash: 2458581366597010878
196
+ required_rubygems_version: !ruby/object:Gem::Requirement
197
+ none: false
198
+ requirements:
199
+ - - ! '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ segments:
203
+ - 0
204
+ hash: 2458581366597010878
205
+ requirements: []
206
+ rubyforge_project:
207
+ rubygems_version: 1.8.24
208
+ signing_key:
209
+ specification_version: 3
210
+ summary: AppStatus is a Rails engine for exposing app data to Nagios..
211
+ test_files:
212
+ - spec/controllers/status_controller_spec.rb
213
+ - spec/dummy/app/assets/javascripts/application.js
214
+ - spec/dummy/app/assets/stylesheets/application.css
215
+ - spec/dummy/app/controllers/application_controller.rb
216
+ - spec/dummy/app/helpers/application_helper.rb
217
+ - spec/dummy/app/views/layouts/application.html.erb
218
+ - spec/dummy/config/application.rb
219
+ - spec/dummy/config/boot.rb
220
+ - spec/dummy/config/database.yml
221
+ - spec/dummy/config/environment.rb
222
+ - spec/dummy/config/environments/development.rb
223
+ - spec/dummy/config/environments/production.rb
224
+ - spec/dummy/config/environments/test.rb
225
+ - spec/dummy/config/initializers/backtrace_silencers.rb
226
+ - spec/dummy/config/initializers/inflections.rb
227
+ - spec/dummy/config/initializers/mime_types.rb
228
+ - spec/dummy/config/initializers/secret_token.rb
229
+ - spec/dummy/config/initializers/session_store.rb
230
+ - spec/dummy/config/initializers/wrap_parameters.rb
231
+ - spec/dummy/config/locales/en.yml
232
+ - spec/dummy/config/routes.rb
233
+ - spec/dummy/config.ru
234
+ - spec/dummy/log/test.log
235
+ - spec/dummy/public/404.html
236
+ - spec/dummy/public/422.html
237
+ - spec/dummy/public/500.html
238
+ - spec/dummy/public/favicon.ico
239
+ - spec/dummy/Rakefile
240
+ - spec/dummy/README.rdoc
241
+ - spec/dummy/script/rails
242
+ - spec/models/check_collection_spec.rb
243
+ - spec/spec_helper.rb