class Passages::RoutesController

Single Rails controller responsible for

collecting instance variables and rendering the Engine's main page

Public Instance Methods

routes() click to toggle source
# File app/controllers/passages/routes_controller.rb, line 13
def routes
  @routes = application_routes
  @mount_routes = mount_routes
  mounted_engines = @mount_routes.keys
  @engine_routes = engine_routes.select do |r|
    mounted_engines.include?(r[:engine])
  end
end

Private Instance Methods

application_routes() click to toggle source
# File app/controllers/passages/routes_controller.rb, line 28
def application_routes
  routes = passages_rails_routes.reject { |route| route.is_a?(MountRoute) }

  RouteCollection.new(routes)
end
engine_routes() click to toggle source
# File app/controllers/passages/routes_controller.rb, line 24
def engine_routes
  EngineRouteCollection.new(mounted_engine_routes)
end
mount_routes() click to toggle source
# File app/controllers/passages/routes_controller.rb, line 50
def mount_routes
  {}.tap do |mount_route_hash|
    passages_rails_routes.each do |route|
      mount_route_hash[route.engine_name] = route if route.is_a?(MountRoute)
    end
  end
end
mounted_engine_routes() click to toggle source
# File app/controllers/passages/routes_controller.rb, line 34
def mounted_engine_routes
  @mounted_engine_routes ||= ::Rails::Engine.subclasses.map do |engine|
    routes = engine.routes.routes.routes.map do |route|
      EngineRoute.new(route, engine.name)
    end

    { engine: engine.name, routes: routes }
  end.compact
end
passages_rails_routes() click to toggle source
# File app/controllers/passages/routes_controller.rb, line 44
def passages_rails_routes
  @passages_rails_routes ||= Rails.application.routes.routes.map do |route|
    Route.from_raw_route(route)
  end
end