class Rails::InfoController
:nodoc:
def index
def index redirect_to action: :routes end
def matching_routes(query:, exact_match:)
def matching_routes(query:, exact_match:) return [] if query.blank? normalized_path = ("/" + query).squeeze("/") query_without_url_or_path_suffix = query.gsub(/(\w)(_path$)/, '\1').gsub(/(\w)(_url$)/, '\1') _routes.routes.filter_map do |route| route_wrapper = ActionDispatch::Routing::RouteWrapper.new(route) if exact_match match = route.path.match(normalized_path) match ||= (query_without_url_or_path_suffix === route_wrapper.name) else match = route_wrapper.path.match(query) match ||= route_wrapper.name.include?(query_without_url_or_path_suffix) end match ||= (query === route_wrapper.verb) unless match controller_action = RFC2396_PARSER.escape(route_wrapper.reqs) match = exact_match ? (query === controller_action) : controller_action.include?(query) end route_wrapper.path if match end end
def properties
def properties @info = Rails::Info.to_html @page_title = "Properties" end
def routes
def routes if query = params[:query] query = RFC2396_PARSER.escape query render json: { exact: matching_routes(query: query, exact_match: true), fuzzy: matching_routes(query: query, exact_match: false) } else @routes_inspector = ActionDispatch::Routing::RoutesInspector.new(_routes.routes) @page_title = "Routes" end end