From bde5fd205c4a269f90207b84236acca10ffabbd7 Mon Sep 17 00:00:00 2001 From: Maxwell Salzberg Date: Fri, 14 Oct 2011 14:23:18 -0700 Subject: [PATCH] MS DG fix soup, memoize posts --- lib/stream/soup.rb | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/stream/soup.rb b/lib/stream/soup.rb index 34ba2a9fb..9d74cedf4 100644 --- a/lib/stream/soup.rb +++ b/lib/stream/soup.rb @@ -12,31 +12,33 @@ class Stream::Soup < Stream::Base end def posts - post_ids = aspect_posts_ids + followed_tag_ids + mentioned_post_ids - post_ids += featured_user_post_ids - Post.where(:id => post_ids).for_a_stream(max_time, order) + @posts ||= lambda do + post_ids = aspect_posts_ids + followed_tag_ids + mentioned_post_ids + post_ids += featured_user_post_ids + Post.where(:id => post_ids).for_a_stream(max_time, order) + end.call end def ajax_stream? - true + false end private def aspect_posts_ids - user.visible_post_ids(:limit => 15, :order => order, :max_time => max_time) + @aspect_posts_ids ||= user.visible_post_ids(:limit => 15, :order => "#{order} DESC", :max_time => max_time, :all_aspects? => true, :by_members_of => aspect_ids) end def followed_tag_ids - ids(StatusMessage.tag_stream(user, tag_array, max_time, order)) + @followed_tag_ids ||= ids(StatusMessage.tag_stream(user, tag_array, max_time, order)) end def mentioned_post_ids - ids(StatusMessage.where_person_is_mentioned(user.person).for_a_stream(max_time, order)) + @mentioned_post_ids ||= ids(StatusMessage.where_person_is_mentioned(user.person).for_a_stream(max_time, order)) end def featured_user_post_ids - ids(Post.all_public.where(:author_id => featured_user_ids).for_a_stream(max_time, order)) + @featured_user_post_ids ||= ids(Post.all_public.where(:author_id => featured_user_ids).for_a_stream(max_time, order)) end #worthless helpers @@ -47,7 +49,7 @@ class Stream::Soup < Stream::Base def tag_array user.followed_tags.select('name').map{|x| x.name} end - + def ids(enumerable) Post.connection.select_values(enumerable.select('posts.id').to_sql) end