# File lib/apipie/extractor.rb, line 57
      def apis_from_routes
        return @apis_from_routes if @apis_from_routes

        api_prefix = Apipie.api_base_url.sub(/\/$/,"")
        all_routes = Rails.application.routes.routes.map do |r|
          {
            :verb => case r.verb
                     when Regexp then r.verb.source[/\w+/]
                     else r.verb.to_s
                     end,
            :path => case
                     when r.path.respond_to?(:spec) then r.path.spec.to_s
                     else r.path.to_s
                     end,
            :controller => r.requirements[:controller],
            :action => r.requirements[:action]
          }


        end
        api_routes = all_routes.find_all do |r|
          r[:path].starts_with?(Apipie.api_base_url)
        end

        @apis_from_routes = Hash.new { |h, k| h[k] = [] }

        api_routes.each do |route|
          controller_path, action = route[:controller], route[:action]
          next unless controller_path && action

          controller = "#{controller_path}_controller".camelize

          path = if /^#{Regexp.escape(api_prefix)}(.*)$/ =~ route[:path]
                   $1.sub!(/\(\.:format\)$/,"")
                 else
                   nil
                 end

          if route[:verb].present?
            @apis_from_routes[[controller, action]] << {:method => route[:verb], :path => path}
          end
        end
        @apis_from_routes

        resource_descriptions = Apipie.resource_descriptions.values.map(&:values).flatten
        method_descriptions = resource_descriptions.map(&:method_descriptions).flatten
        apis_from_docs = method_descriptions.reduce({}) do |h, desc|
          apis = desc.method_apis_to_json.map do |api|
            { :method => api[:http_method],
              :path => api[:api_url],
              :desc => api[:short_description] }
          end
          h.update(desc.id => apis)
        end

        @apis_from_routes.each do |(controller, action), new_apis|
          method_key = "#{Apipie.get_resource_name(controller.constantize)}##{action}"
          old_apis = apis_from_docs[method_key] || []
          new_apis.each do |new_api|
            new_api[:path].sub!(/\(\.:format\)$/,"")
            old_api = old_apis.find do |api|
              api[:path] == "#{api_prefix}#{new_api[:path]}"
            end
            if old_api
              new_api[:desc] = old_api[:desc]
            end
          end
        end
        @apis_from_routes
      end