class Openapi::RoutesParser

Attributes

routes[RW]

Public Class Methods

new(controller) click to toggle source
# File lib/openapi/routes_parser.rb, line 7
def initialize(controller)
  @controller = controller
  @routes = []

  formatter = ActionDispatch::Routing::ConsoleFormatter.new
  @routes_table = routes_inspector.format(formatter, controller_slug)

  parse!
end

Private Instance Methods

controller_slug() click to toggle source
# File lib/openapi/routes_parser.rb, line 27
def controller_slug
  @controller.
    to_s.
    underscore.
    gsub('::', '/').
    gsub('_controller','')
end
parse!() click to toggle source
# File lib/openapi/routes_parser.rb, line 35
def parse!
  @routes_table = @routes_table.split("\n")
  @routes_table.shift

  @routes_table.each do |row|
    row.remove! ' {:format=>:json}'
    action = row.sub(/.*?#/, '')
    route  = row.split(' ').reverse
    path   = route[1].gsub('(.:format)','')
    method = route[2].underscore

    @routes << [method, path, action]
  end
end
rails_routes() click to toggle source
# File lib/openapi/routes_parser.rb, line 19
def rails_routes
  Rails.application.routes.routes
end
routes_inspector() click to toggle source
# File lib/openapi/routes_parser.rb, line 23
def routes_inspector
  ActionDispatch::Routing::RoutesInspector.new(rails_routes)
end