Class: Updoc::Report::RackReport

Inherits:
Object
  • Object
show all
Includes:
Updoc::Report
Defined in:
lib/updoc/report/rack_report.rb

Constant Summary

Constants included from Updoc::Report

SORT

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Updoc::Report

#base_report, #map_grape_endpoints, #map_updoc_consumers, #write_updoc_report

Constructor Details

#initializeRackReport

Returns a new instance of RackReport.


12
13
14
# File 'lib/updoc/report/rack_report.rb', line 12

def initialize
  @rack_app = ::Rack::Server.new(config: 'config.ru').app # loads all the deps
end

Class Method Details

.report!Object


8
9
10
# File 'lib/updoc/report/rack_report.rb', line 8

def self.report!
  new.report!
end

Instance Method Details

#map_producers_from_rackObject


27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/updoc/report/rack_report.rb', line 27

def map_producers_from_rack
  producers = {}
  middleware = rack_app
  while middleware
    if Object.const_defined?('Grape::API') && middleware.class < Grape::API
      prefix = middleware.class.prefix
      producers.merge!(
        map_grape_endpoints([GrapeApp.new(middleware.class, prefix)])
      )
    end

    middleware = middleware.instance_variable_get('@app')
  end

  producers
end

#report!Object


16
17
18
19
20
21
22
23
24
25
# File 'lib/updoc/report/rack_report.rb', line 16

def report!
  fail 'Updoc.application_name must be defined' unless Updoc.application_name

  report = base_report.merge(
    consumes: map_updoc_consumers,
    produces: map_producers_from_rack
  )

  write_updoc_report(File.expand_path('updoc.yml'), report)
end