Commit 6b9f221a278ebe4a78f4f0b4d60f87659785595c

Authored by gitlabhq
1 parent 76294699

perfomance fix

app/controllers/issues_controller.rb
@@ -19,6 +19,8 @@ class IssuesController < ApplicationController @@ -19,6 +19,8 @@ class IssuesController < ApplicationController
19 else @project.issues.opened 19 else @project.issues.opened
20 end 20 end
21 21
  22 + @issues = @issues.includes(:author, :project)
  23 +
22 respond_to do |format| 24 respond_to do |format|
23 format.html # index.html.erb 25 format.html # index.html.erb
24 format.js 26 format.js
@@ -35,7 +37,7 @@ class IssuesController < ApplicationController @@ -35,7 +37,7 @@ class IssuesController < ApplicationController
35 end 37 end
36 38
37 def show 39 def show
38 - @notes = @issue.notes.order("created_at DESC").limit(20) 40 + @notes = @issue.notes.inc_author.order("created_at DESC").limit(20)
39 @note = @project.notes.new(:noteable => @issue) 41 @note = @project.notes.new(:noteable => @issue)
40 42
41 respond_to do |format| 43 respond_to do |format|
app/models/note.rb
@@ -30,6 +30,8 @@ class Note < ActiveRecord::Base @@ -30,6 +30,8 @@ class Note < ActiveRecord::Base
30 scope :last_week, where("created_at >= :date", :date => (Date.today - 7.days)) 30 scope :last_week, where("created_at >= :date", :date => (Date.today - 7.days))
31 scope :since, lambda { |day| where("created_at >= :date", :date => (day)) } 31 scope :since, lambda { |day| where("created_at >= :date", :date => (day)) }
32 scope :fresh, order("created_at DESC") 32 scope :fresh, order("created_at DESC")
  33 + scope :inc_author_project, includes(:project, :author)
  34 + scope :inc_author, includes(:author)
33 35
34 mount_uploader :attachment, AttachmentUploader 36 mount_uploader :attachment, AttachmentUploader
35 end 37 end
app/models/project.rb
@@ -74,8 +74,16 @@ class Project < ActiveRecord::Base @@ -74,8 +74,16 @@ class Project < ActiveRecord::Base
74 users_projects.find_by_user_id(user.id) if user 74 users_projects.find_by_user_id(user.id) if user
75 end 75 end
76 76
  77 + def fresh_issues(n)
  78 + issues.includes(:project, :author).order("created_at desc").first(n)
  79 + end
  80 +
  81 + def fresh_notes(n)
  82 + notes.inc_author_project.order("created_at desc").first(n)
  83 + end
  84 +
77 def common_notes 85 def common_notes
78 - notes.where(:noteable_type => ["", nil]) 86 + notes.where(:noteable_type => ["", nil]).inc_author_project
79 end 87 end
80 88
81 def build_commit_note(commit) 89 def build_commit_note(commit)
@@ -134,8 +142,8 @@ class Project < ActiveRecord::Base @@ -134,8 +142,8 @@ class Project < ActiveRecord::Base
134 def updates(n = 3) 142 def updates(n = 3)
135 [ 143 [
136 fresh_commits(n), 144 fresh_commits(n),
137 - issues.last(n),  
138 - notes.fresh.limit(n) 145 + fresh_issues(n),
  146 + fresh_notes(n)
139 ].compact.flatten.sort do |x, y| 147 ].compact.flatten.sort do |x, y|
140 y.created_at <=> x.created_at 148 y.created_at <=> x.created_at
141 end[0...n] 149 end[0...n]