• Andreas Brandl's avatar
    Preload routes information · 53801b12
    Andreas Brandl authored
    This fixes a high frequency N+1 issue:
    
    `RoutableActions#find_routable!` is used across many controllers to
    retrieve e.g. the Project or Namespace by path. The `#find_routable!`
    method calls `#ensure_canonical_path` which in turn retrieves
    `#full_path` from the given Routable.
    
    This in turn triggers a lookup on `routes`, leading to a high frequency
    of these queries:
    
    ```sql
    SELECT  "routes".* FROM "routes" WHERE "routes"."source_id" = $1 AND
    "routes"."source_type" = $2 LIMIT $3
    ```
    
    This is unnecessary as we already join `routes` in
    `Routable#find_by_full_path` anyways.
    53801b12
routable.rb 3.63 KB