cangaroo 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/Rakefile +13 -11
  4. data/app/controllers/cangaroo/endpoint_controller.rb +24 -4
  5. data/app/interactors/cangaroo/count_json_object.rb +3 -0
  6. data/app/interactors/cangaroo/run_polls.rb +12 -0
  7. data/app/interactors/cangaroo/validate_json_schema.rb +9 -3
  8. data/app/jobs/cangaroo/job.rb +9 -27
  9. data/app/jobs/cangaroo/poll_job.rb +67 -0
  10. data/app/models/cangaroo/connection.rb +10 -2
  11. data/app/models/cangaroo/poll_timestamp.rb +17 -0
  12. data/db/migrate/20151030140821_add_parameters_to_cangaroo_connection.rb +1 -1
  13. data/db/migrate/20160317020230_create_cangaroo_poll_timestamps.rb +12 -0
  14. data/lib/cangaroo.rb +2 -0
  15. data/lib/cangaroo/class_configuration.rb +24 -0
  16. data/lib/cangaroo/engine.rb +2 -0
  17. data/lib/cangaroo/logger.rb +66 -0
  18. data/lib/cangaroo/version.rb +1 -1
  19. data/lib/cangaroo/webhook/client.rb +21 -3
  20. data/lib/tasks/cangaroo_tasks.rake +7 -4
  21. data/spec/controllers/cangaroo/endpoint_controller_spec.rb +75 -35
  22. data/spec/fixtures/json_payload_connection_response.json +1 -0
  23. data/spec/fixtures/json_payload_empty.json +3 -0
  24. data/spec/interactors/cangaroo/perform_jobs_spec.rb +28 -13
  25. data/spec/interactors/cangaroo/run_polls_spec.rb +18 -0
  26. data/spec/interactors/cangaroo/validate_json_schema_spec.rb +8 -0
  27. data/spec/jobs/cangaroo/job_spec.rb +12 -1
  28. data/spec/jobs/cangaroo/poll_job_spec.rb +107 -0
  29. data/spec/lib/cangaroo/webhook/client_spec.rb +38 -0
  30. data/spec/rails_helper.rb +18 -44
  31. data/spec/support/database_cleaner.rb +14 -0
  32. data/spec/support/factory_girl.rb +5 -0
  33. data/spec/support/rails_app.rb +29 -0
  34. data/spec/support/shoulda_matchers.rb +8 -0
  35. data/spec/support/webmock.rb +8 -0
  36. metadata +71 -87
  37. data/spec/dummy/README.rdoc +0 -28
  38. data/spec/dummy/Rakefile +0 -6
  39. data/spec/dummy/app/assets/javascripts/application.js +0 -13
  40. data/spec/dummy/app/assets/stylesheets/application.css +0 -15
  41. data/spec/dummy/app/controllers/application_controller.rb +0 -5
  42. data/spec/dummy/app/helpers/application_helper.rb +0 -2
  43. data/spec/dummy/app/views/layouts/application.html.erb +0 -14
  44. data/spec/dummy/bin/bundle +0 -3
  45. data/spec/dummy/bin/rails +0 -4
  46. data/spec/dummy/bin/rake +0 -4
  47. data/spec/dummy/bin/setup +0 -29
  48. data/spec/dummy/config.ru +0 -4
  49. data/spec/dummy/config/application.rb +0 -31
  50. data/spec/dummy/config/boot.rb +0 -5
  51. data/spec/dummy/config/database.yml +0 -11
  52. data/spec/dummy/config/environment.rb +0 -5
  53. data/spec/dummy/config/environments/development.rb +0 -41
  54. data/spec/dummy/config/environments/production.rb +0 -79
  55. data/spec/dummy/config/environments/test.rb +0 -42
  56. data/spec/dummy/config/initializers/assets.rb +0 -11
  57. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  58. data/spec/dummy/config/initializers/cookies_serializer.rb +0 -3
  59. data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  60. data/spec/dummy/config/initializers/inflections.rb +0 -16
  61. data/spec/dummy/config/initializers/mime_types.rb +0 -4
  62. data/spec/dummy/config/initializers/session_store.rb +0 -3
  63. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -9
  64. data/spec/dummy/config/locales/en.yml +0 -23
  65. data/spec/dummy/config/routes.rb +0 -4
  66. data/spec/dummy/config/secrets.yml +0 -22
  67. data/spec/dummy/db/development.sqlite3 +0 -0
  68. data/spec/dummy/db/schema.rb +0 -29
  69. data/spec/dummy/db/test.sqlite3 +0 -0
  70. data/spec/dummy/log/cangaroo.log +0 -0
  71. data/spec/dummy/log/development.log +0 -4024
  72. data/spec/dummy/log/test.log +0 -166964
  73. data/spec/dummy/public/404.html +0 -67
  74. data/spec/dummy/public/422.html +0 -67
  75. data/spec/dummy/public/500.html +0 -66
  76. data/spec/dummy/public/favicon.ico +0 -0
@@ -1,5 +1,6 @@
1
1
  require 'simplecov'
2
2
  require 'codeclimate-test-reporter'
3
+ require 'pry-byebug'
3
4
 
4
5
  SimpleCov.start 'rails' do
5
6
  add_group 'Commands', 'app/commands'
@@ -8,7 +9,9 @@ CodeClimate::TestReporter.start
8
9
 
9
10
  # This file is copied to spec/ when you run 'rails generate rspec:install'
10
11
  ENV['RAILS_ENV'] ||= 'test'
11
- require File.expand_path('../dummy/config/environment.rb', __FILE__)
12
+ require File.expand_path('../support/rails_app.rb', __FILE__)
13
+
14
+ puts "Testing against version #{ActiveRecord::VERSION::STRING}"
12
15
 
13
16
  # Prevent database truncation if the environment is production
14
17
  if Rails.env.production?
@@ -17,56 +20,27 @@ end
17
20
 
18
21
  require 'spec_helper'
19
22
  require 'rspec/rails'
20
- require 'shoulda-matchers'
21
- require 'factory_girl_rails'
22
- require 'database_cleaner'
23
- require 'webmock/rspec'
24
-
25
- # Add additional requires below this line. Rails is not loaded until this point!
26
23
 
27
- # Requires supporting ruby files with custom matchers and macros, etc, in
28
- # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
29
- # run as spec files by default. This means that files in spec/support that end
30
- # in _spec.rb will both be required and run as specs, causing the specs to be
31
- # run twice. It is recommended that you do not name files matching this glob to
32
- # end with _spec.rb. You can configure this pattern with the --pattern
33
- # option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
34
- #
35
- # The following line is provided for convenience purposes. It has the downside
36
- # of increasing the boot-up time by auto-requiring all files in the support
37
- # directory. Alternatively, in the individual `*_spec.rb` files, manually
38
- # require only the support files necessary.
39
- # Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
40
- Dir[File.expand_path('../support/**/*.rb', __FILE__)].each { |f| require f }
24
+ # We manually require each file to make sure the files are required in the
25
+ # correct order and no exceptions come up because of wrong require order
26
+ %w(
27
+ database_cleaner
28
+ webmock
29
+ shoulda_matchers
30
+ factory_girl
31
+ spec_helpers
32
+ ).each { |path| require File.expand_path("../support/#{path}.rb", __FILE__) }
41
33
 
42
34
  # Checks for pending migrations before tests are run.
43
35
  # If you are not using ActiveRecord, you can remove this line.
44
36
  ActiveRecord::Migration.maintain_test_schema!
45
37
 
46
- Shoulda::Matchers.configure do |config|
47
- config.integrate do |with|
48
- with.test_framework :rspec
49
- with.library :rails
50
- end
51
- end
52
-
53
38
  RSpec.configure do |config|
54
- config.include FactoryGirl::Syntax::Methods
55
-
56
- # whitelist codeclimate.com so test coverage can be reported
57
- config.after(:suite) do
58
- WebMock.disable_net_connect!(allow: 'codeclimate.com')
59
- end
60
-
61
- config.before(:suite) do
62
- DatabaseCleaner.strategy = :transaction
63
- DatabaseCleaner.clean_with(:truncation)
64
- end
65
-
66
- config.around(:each) do |example|
67
- DatabaseCleaner.cleaning do
68
- example.run
69
- end
39
+ # reset config before each spec
40
+ config.before(:each) do
41
+ Rails.configuration.cangaroo.basic_auth = false
42
+ Rails.configuration.cangaroo.jobs = []
43
+ Rails.configuration.cangaroo.poll_job = []
70
44
  end
71
45
 
72
46
  # The different available types are documented in the features, such as in
@@ -0,0 +1,14 @@
1
+ require 'database_cleaner'
2
+
3
+ RSpec.configure do |config|
4
+ config.before(:suite) do
5
+ DatabaseCleaner.strategy = :transaction
6
+ DatabaseCleaner.clean_with(:truncation)
7
+ end
8
+
9
+ config.around(:each) do |example|
10
+ DatabaseCleaner.cleaning do
11
+ example.run
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ require 'factory_girl_rails'
2
+
3
+ RSpec.configure do |config|
4
+ config.include FactoryGirl::Syntax::Methods
5
+ end
@@ -0,0 +1,29 @@
1
+ require 'active_record/railtie'
2
+ require 'action_controller/railtie'
3
+ require 'active_job/railtie'
4
+ require 'action_dispatch/railtie'
5
+ require 'securerandom'
6
+
7
+ require 'cangaroo'
8
+
9
+ database_path = File.expand_path('../../../tmp/cangaroo_test.sqlite3', __FILE__)
10
+ ENV['DATABASE_URL'] = "sqlite3://#{database_path}"
11
+
12
+ # Initialize our test app
13
+
14
+ class RailsApp < Rails::Application
15
+ config.secret_key_base = SecureRandom.hex
16
+ config.eager_load = false
17
+ end
18
+
19
+ ActiveSupport.on_load(:action_controller) do
20
+ wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
21
+ end
22
+
23
+ RailsApp.initialize!
24
+
25
+ ActiveRecord::Migrator.migrate "db/migrate"
26
+
27
+ RailsApp.routes.draw do
28
+ mount Cangaroo::Engine => "/cangaroo"
29
+ end
@@ -0,0 +1,8 @@
1
+ require 'shoulda-matchers'
2
+
3
+ Shoulda::Matchers.configure do |config|
4
+ config.integrate do |with|
5
+ with.test_framework :rspec
6
+ with.library :rails
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'webmock/rspec'
2
+
3
+ RSpec.configure do |config|
4
+ # whitelist codeclimate.com so test coverage can be reported
5
+ config.after(:suite) do
6
+ WebMock.disable_net_connect!(allow: 'codeclimate.com')
7
+ end
8
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cangaroo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alessio Rocco
@@ -9,20 +9,20 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-03-25 00:00:00.000000000 Z
12
+ date: 2016-05-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: 4.2.4
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: 4.2.4
28
28
  - !ruby/object:Gem::Dependency
@@ -67,6 +67,20 @@ dependencies:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: 0.13.7
70
+ - !ruby/object:Gem::Dependency
71
+ name: appraisal
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
70
84
  - !ruby/object:Gem::Dependency
71
85
  name: codeclimate-test-reporter
72
86
  requirement: !ruby/object:Gem::Requirement
@@ -110,7 +124,21 @@ dependencies:
110
124
  - !ruby/object:Gem::Version
111
125
  version: '0'
112
126
  - !ruby/object:Gem::Dependency
113
- name: pg
127
+ name: pry-byebug
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: rake
114
142
  requirement: !ruby/object:Gem::Requirement
115
143
  requirements:
116
144
  - - ">="
@@ -179,6 +207,20 @@ dependencies:
179
207
  - - ">="
180
208
  - !ruby/object:Gem::Version
181
209
  version: '0'
210
+ - !ruby/object:Gem::Dependency
211
+ name: sqlite3
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ type: :development
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
182
224
  - !ruby/object:Gem::Dependency
183
225
  name: webmock
184
226
  requirement: !ruby/object:Gem::Requirement
@@ -209,61 +251,28 @@ files:
209
251
  - app/interactors/cangaroo/handle_request.rb
210
252
  - app/interactors/cangaroo/perform_flow.rb
211
253
  - app/interactors/cangaroo/perform_jobs.rb
254
+ - app/interactors/cangaroo/run_polls.rb
212
255
  - app/interactors/cangaroo/validate_json_schema.rb
213
256
  - app/jobs/cangaroo/job.rb
257
+ - app/jobs/cangaroo/poll_job.rb
214
258
  - app/models/cangaroo/connection.rb
259
+ - app/models/cangaroo/poll_timestamp.rb
215
260
  - config/routes.rb
216
261
  - db/migrate/20151028172151_create_cangaroo_connections.rb
217
262
  - db/migrate/20151030140821_add_parameters_to_cangaroo_connection.rb
263
+ - db/migrate/20160317020230_create_cangaroo_poll_timestamps.rb
218
264
  - lib/cangaroo.rb
265
+ - lib/cangaroo/class_configuration.rb
219
266
  - lib/cangaroo/engine.rb
267
+ - lib/cangaroo/logger.rb
220
268
  - lib/cangaroo/version.rb
221
269
  - lib/cangaroo/webhook/client.rb
222
270
  - lib/cangaroo/webhook/error.rb
223
271
  - lib/tasks/cangaroo_tasks.rake
224
272
  - spec/controllers/cangaroo/endpoint_controller_spec.rb
225
- - spec/dummy/README.rdoc
226
- - spec/dummy/Rakefile
227
- - spec/dummy/app/assets/javascripts/application.js
228
- - spec/dummy/app/assets/stylesheets/application.css
229
- - spec/dummy/app/controllers/application_controller.rb
230
- - spec/dummy/app/helpers/application_helper.rb
231
- - spec/dummy/app/views/layouts/application.html.erb
232
- - spec/dummy/bin/bundle
233
- - spec/dummy/bin/rails
234
- - spec/dummy/bin/rake
235
- - spec/dummy/bin/setup
236
- - spec/dummy/config.ru
237
- - spec/dummy/config/application.rb
238
- - spec/dummy/config/boot.rb
239
- - spec/dummy/config/database.yml
240
- - spec/dummy/config/environment.rb
241
- - spec/dummy/config/environments/development.rb
242
- - spec/dummy/config/environments/production.rb
243
- - spec/dummy/config/environments/test.rb
244
- - spec/dummy/config/initializers/assets.rb
245
- - spec/dummy/config/initializers/backtrace_silencers.rb
246
- - spec/dummy/config/initializers/cookies_serializer.rb
247
- - spec/dummy/config/initializers/filter_parameter_logging.rb
248
- - spec/dummy/config/initializers/inflections.rb
249
- - spec/dummy/config/initializers/mime_types.rb
250
- - spec/dummy/config/initializers/session_store.rb
251
- - spec/dummy/config/initializers/wrap_parameters.rb
252
- - spec/dummy/config/locales/en.yml
253
- - spec/dummy/config/routes.rb
254
- - spec/dummy/config/secrets.yml
255
- - spec/dummy/db/development.sqlite3
256
- - spec/dummy/db/schema.rb
257
- - spec/dummy/db/test.sqlite3
258
- - spec/dummy/log/cangaroo.log
259
- - spec/dummy/log/development.log
260
- - spec/dummy/log/test.log
261
- - spec/dummy/public/404.html
262
- - spec/dummy/public/422.html
263
- - spec/dummy/public/500.html
264
- - spec/dummy/public/favicon.ico
265
273
  - spec/factories/cangaroo_connections.rb
266
274
  - spec/fixtures/json_payload_connection_response.json
275
+ - spec/fixtures/json_payload_empty.json
267
276
  - spec/fixtures/json_payload_no_id.json
268
277
  - spec/fixtures/json_payload_ok.json
269
278
  - spec/fixtures/json_payload_wrong_key.json
@@ -272,13 +281,20 @@ files:
272
281
  - spec/interactors/cangaroo/handle_request_spec.rb
273
282
  - spec/interactors/cangaroo/perform_flow_spec.rb
274
283
  - spec/interactors/cangaroo/perform_jobs_spec.rb
284
+ - spec/interactors/cangaroo/run_polls_spec.rb
275
285
  - spec/interactors/cangaroo/validate_json_schema_spec.rb
276
286
  - spec/jobs/cangaroo/job_spec.rb
287
+ - spec/jobs/cangaroo/poll_job_spec.rb
277
288
  - spec/lib/cangaroo/webhook/client_spec.rb
278
289
  - spec/models/cangaroo/connection_spec.rb
279
290
  - spec/rails_helper.rb
280
291
  - spec/spec_helper.rb
292
+ - spec/support/database_cleaner.rb
293
+ - spec/support/factory_girl.rb
294
+ - spec/support/rails_app.rb
295
+ - spec/support/shoulda_matchers.rb
281
296
  - spec/support/spec_helpers.rb
297
+ - spec/support/webmock.rb
282
298
  homepage: https://github.com/nebulab/cangaroo
283
299
  licenses:
284
300
  - MIT
@@ -291,7 +307,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
291
307
  requirements:
292
308
  - - ">="
293
309
  - !ruby/object:Gem::Version
294
- version: '0'
310
+ version: 2.2.0
295
311
  required_rubygems_version: !ruby/object:Gem::Requirement
296
312
  requirements:
297
313
  - - ">="
@@ -299,54 +315,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
299
315
  version: '0'
300
316
  requirements: []
301
317
  rubyforge_project:
302
- rubygems_version: 2.5.0
318
+ rubygems_version: 2.6.3
303
319
  signing_key:
304
320
  specification_version: 4
305
321
  summary: Connect Any App to Any Service
306
322
  test_files:
307
323
  - spec/controllers/cangaroo/endpoint_controller_spec.rb
308
- - spec/dummy/app/assets/javascripts/application.js
309
- - spec/dummy/app/assets/stylesheets/application.css
310
- - spec/dummy/app/controllers/application_controller.rb
311
- - spec/dummy/app/helpers/application_helper.rb
312
- - spec/dummy/app/views/layouts/application.html.erb
313
- - spec/dummy/bin/bundle
314
- - spec/dummy/bin/rails
315
- - spec/dummy/bin/rake
316
- - spec/dummy/bin/setup
317
- - spec/dummy/config/application.rb
318
- - spec/dummy/config/boot.rb
319
- - spec/dummy/config/database.yml
320
- - spec/dummy/config/environment.rb
321
- - spec/dummy/config/environments/development.rb
322
- - spec/dummy/config/environments/production.rb
323
- - spec/dummy/config/environments/test.rb
324
- - spec/dummy/config/initializers/assets.rb
325
- - spec/dummy/config/initializers/backtrace_silencers.rb
326
- - spec/dummy/config/initializers/cookies_serializer.rb
327
- - spec/dummy/config/initializers/filter_parameter_logging.rb
328
- - spec/dummy/config/initializers/inflections.rb
329
- - spec/dummy/config/initializers/mime_types.rb
330
- - spec/dummy/config/initializers/session_store.rb
331
- - spec/dummy/config/initializers/wrap_parameters.rb
332
- - spec/dummy/config/locales/en.yml
333
- - spec/dummy/config/routes.rb
334
- - spec/dummy/config/secrets.yml
335
- - spec/dummy/config.ru
336
- - spec/dummy/db/development.sqlite3
337
- - spec/dummy/db/schema.rb
338
- - spec/dummy/db/test.sqlite3
339
- - spec/dummy/log/cangaroo.log
340
- - spec/dummy/log/development.log
341
- - spec/dummy/log/test.log
342
- - spec/dummy/public/404.html
343
- - spec/dummy/public/422.html
344
- - spec/dummy/public/500.html
345
- - spec/dummy/public/favicon.ico
346
- - spec/dummy/Rakefile
347
- - spec/dummy/README.rdoc
348
324
  - spec/factories/cangaroo_connections.rb
349
325
  - spec/fixtures/json_payload_connection_response.json
326
+ - spec/fixtures/json_payload_empty.json
350
327
  - spec/fixtures/json_payload_no_id.json
351
328
  - spec/fixtures/json_payload_ok.json
352
329
  - spec/fixtures/json_payload_wrong_key.json
@@ -355,10 +332,17 @@ test_files:
355
332
  - spec/interactors/cangaroo/handle_request_spec.rb
356
333
  - spec/interactors/cangaroo/perform_flow_spec.rb
357
334
  - spec/interactors/cangaroo/perform_jobs_spec.rb
335
+ - spec/interactors/cangaroo/run_polls_spec.rb
358
336
  - spec/interactors/cangaroo/validate_json_schema_spec.rb
359
337
  - spec/jobs/cangaroo/job_spec.rb
338
+ - spec/jobs/cangaroo/poll_job_spec.rb
360
339
  - spec/lib/cangaroo/webhook/client_spec.rb
361
340
  - spec/models/cangaroo/connection_spec.rb
362
341
  - spec/rails_helper.rb
363
342
  - spec/spec_helper.rb
343
+ - spec/support/database_cleaner.rb
344
+ - spec/support/factory_girl.rb
345
+ - spec/support/rails_app.rb
346
+ - spec/support/shoulda_matchers.rb
364
347
  - spec/support/spec_helpers.rb
348
+ - spec/support/webmock.rb
@@ -1,28 +0,0 @@
1
- == README
2
-
3
- This README would normally document whatever steps are necessary to get the
4
- application up and running.
5
-
6
- Things you may want to cover:
7
-
8
- * Ruby version
9
-
10
- * System dependencies
11
-
12
- * Configuration
13
-
14
- * Database creation
15
-
16
- * Database initialization
17
-
18
- * How to run the test suite
19
-
20
- * Services (job queues, cache servers, search engines, etc.)
21
-
22
- * Deployment instructions
23
-
24
- * ...
25
-
26
-
27
- Please feel free to use a different markup language if you do not plan to run
28
- <tt>rake doc:app</tt>.