Commit 5a8cf044493f7ae7a5096e0935332ccee7d245d3
1 parent
047df46a
Exists in
master
and in
1 other branch
Reduce hits to the database for unresolved err count by caching values.
Showing
2 changed files
with
6 additions
and
3 deletions
Show diff stats
app/controllers/apps_controller.rb
| ... | ... | @@ -45,9 +45,12 @@ class AppsController < InheritedResources::Base |
| 45 | 45 | |
| 46 | 46 | protected |
| 47 | 47 | def collection |
| 48 | - # Sort apps by number of unresolved errs (highest number first) | |
| 48 | + # Sort apps by number of unresolved errs, descending. | |
| 49 | + # Caches the unresolved err counts while performing the sort. | |
| 50 | + @unresolved_counts = {} | |
| 49 | 51 | @apps ||= end_of_association_chain.all.sort{|a,b| |
| 50 | - b.errs.unresolved.count <=> a.errs.unresolved.count | |
| 52 | + [a,b].each{|app| @unresolved_counts[app.id] ||= app.errs.unresolved.count } | |
| 53 | + @unresolved_counts[b.id] <=> @unresolved_counts[a.id] | |
| 51 | 54 | } |
| 52 | 55 | end |
| 53 | 56 | ... | ... |
app/views/apps/index.html.haml
| ... | ... | @@ -15,7 +15,7 @@ |
| 15 | 15 | %td.deploy= app.last_deploy_at ? link_to( app.last_deploy_at.to_s(:micro) << " (#{app.deploys.last.short_revision})", app_deploys_path(app)) : 'n/a' |
| 16 | 16 | %td.count |
| 17 | 17 | - if app.errs.count > 0 |
| 18 | - - unresolved = app.errs.unresolved.count | |
| 18 | + - unresolved = @unresolved_counts[app.id] | |
| 19 | 19 | = link_to unresolved, app_path(app), :class => (unresolved == 0 ? "resolved" : nil) |
| 20 | 20 | - else |
| 21 | 21 | \- | ... | ... |