Class: RailsApiDocs::Inspectors::RouteInspector

Inherits:
Object
  • Object
show all
Defined in:
lib/rails-api-docs/inspectors/route_inspector.rb

Overview

Walks a Rails route set and produces a normalized array of hashes describing each user-facing route:

{ verb:, path:, controller:, action:, name:, path_params: }

Internal Rails routes (mailers, conductor, active_storage, etc.) are skipped. Routes without a resolvable controller/action are skipped.

Constant Summary collapse

INTERNAL_PREFIXES =
%w[
  /rails/info
  /rails/conductor
  /rails/mailers
  /rails/active_storage
  /rails/action_mailbox
  /action_cable
  /assets
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(route_set: nil, config: nil) ⇒ RouteInspector

Returns a new instance of RouteInspector.

Raises:

  • (ArgumentError)


23
24
25
26
27
# File 'lib/rails-api-docs/inspectors/route_inspector.rb', line 23

def initialize(route_set: nil, config: nil)
  @route_set = route_set || (defined?(Rails) && Rails.application&.routes)
  @config    = config    || (defined?(RailsApiDocs) ? RailsApiDocs.configuration : nil)
  raise ArgumentError, "no route set available" unless @route_set
end

Instance Method Details

#callObject



29
30
31
# File 'lib/rails-api-docs/inspectors/route_inspector.rb', line 29

def call
  @route_set.routes.flat_map { |route| extract(route) }.compact
end