Class: RoutesApiSpecGenerator::RouteCollector

Inherits:
Object
  • Object
show all
Defined in:
lib/routes_api_spec_generator/route_collector.rb

Instance Method Summary collapse

Constructor Details

#initialize(routes:, namespace_prefix: '/api/v1', verbs: %w[GET])) ⇒ RouteCollector

Returns a new instance of RouteCollector.



5
6
7
8
9
# File 'lib/routes_api_spec_generator/route_collector.rb', line 5

def initialize(routes:, namespace_prefix: '/api/v1', verbs: %w[GET])
  @routes = routes
  @namespace_prefix = namespace_prefix
  @verbs = verbs.map(&:upcase)
end

Instance Method Details

#collectObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/routes_api_spec_generator/route_collector.rb', line 11

def collect
  @routes.filter_map do |route|
    next unless matching_route?(route)

    verb = primary_verb(route)
    next unless @verbs.include?(verb)

    {
      verb: verb,
      path: route.path.spec.to_s.gsub('(.:format)', ''),
      controller: route.defaults[:controller],
      action: route.defaults[:action].to_s
    }
  end.uniq { |r| [r[:path], r[:verb], r[:action]] }
end