Class: Updoc::Report::RailsReport

Inherits:
Object
  • Object
show all
Includes:
Updoc::Report
Defined in:
lib/updoc/report/rails_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

#initialize(rails_app) ⇒ RailsReport

Returns a new instance of RailsReport.



10
11
12
13
# File 'lib/updoc/report/rails_report.rb', line 10

def initialize(rails_app)
  @rails_app = rails_app
  rails_app.eager_load!
end

Class Method Details

.report!(rails_app = ::Rails.application) ⇒ Object



6
7
8
# File 'lib/updoc/report/rails_report.rb', line 6

def self.report!(rails_app = ::Rails.application)
  new(rails_app).report!
end

Instance Method Details

#map_producers_from_railsObject



26
27
28
29
30
31
32
33
34
# File 'lib/updoc/report/rails_report.rb', line 26

def map_producers_from_rails
  if Object.const_defined?('Grape::API')
    map_grape_endpoints(
      rails_app.routes.routes.select do |r|
        r.app.class <= Class && r.app < Grape::API
      end.map { |rails_route| GrapeApp.new(rails_route.app, rails_route.path.spec.to_s) }
    )
  end
end

#report!Object



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

def report!
  report = base_report.merge(
    consumes: map_updoc_consumers,
    produces: map_producers_from_rails
  )

  report[:name] ||= rails_app.class.parent_name

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