Speed up person show

This commit is contained in:
Raphael 2011-01-19 18:45:45 -08:00
parent 0f978b983a
commit 5eb0bf6736
2 changed files with 26 additions and 1 deletions

View file

@ -78,7 +78,7 @@ module Diaspora
def posts_from(person)
asp = Aspect.arel_table
p = Post.arel_table
person.posts.includes(:aspects).where( p[:public].eq(true).or(asp[:user_id].eq(self.id))).select('DISTINCT `posts`.*').order("posts.updated_at DESC")
person.posts.includes(:aspects, :comments => {:person => :profile}).where( p[:public].eq(true).or(asp[:user_id].eq(self.id))).select('DISTINCT `posts`.*').order("posts.updated_at DESC")
end
end
end

View file

@ -122,7 +122,32 @@ describe PeopleController do
get :show, :id => @user.person.id
response.should be_success
end
describe 'performance' do
before do
require 'benchmark'
@posts = []
@users = []
8.times do |n|
user = Factory.create(:user)
@users << user
aspect = user.aspects.create(:name => 'people')
connect_users(@user, @user.aspects.first, user, aspect)
@posts << @user.post(:status_message, :message => "hello#{n}", :to => aspect.id)
end
@posts.each do |post|
@users.each do |user|
user.comment "yo#{post.message}", :on => post
end
end
end
it 'takes time' do
Benchmark.realtime{
get :show, :id => @user.person.id
}.should < 0.2
end
end
it 'renders with a post' do
@user.post :status_message, :message => 'test more', :to => @aspect.id
get :show, :id => @user.person.id