From ac819d4d682d735fc667ce73e255b60a3dd2ba60 Mon Sep 17 00:00:00 2001 From: Alexey Verkhovsky Date: Sun, 11 Sep 2005 09:34:41 +0000 Subject: [PATCH] BREAKS BUILD: all pages etc are much faster, but categories functionality is broken (it was responsible for calling the renderer once per every page on All Pages) --- app/controllers/wiki_controller.rb | 4 +++- app/models/page_set.rb | 4 +++- app/models/web.rb | 2 +- lib/page_renderer.rb | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index efe89ef2..be93de83 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -291,7 +291,9 @@ class WikiController < ApplicationController @category = @params['category'] @categories = [] @pages_in_category = @web.select do |page| - page_categories = PageRenderer.new(page.revisions.last).display_content.find_chunks(Category) + # FIXME: was PageRenderer.new(page.revisions.last).display_content.find_chunks(Category), + # heinously slow + page_categories = [] page_categories = page_categories.map { |cat| cat.list }.flatten page_categories.each {|c| @categories << c unless @categories.include? c } page_categories.include?(@category) diff --git a/app/models/page_set.rb b/app/models/page_set.rb index d806e5a8..6a9b2700 100644 --- a/app/models/page_set.rb +++ b/app/models/page_set.rb @@ -81,7 +81,9 @@ class PageSet < Array end def wiki_words - self.inject([]) { |wiki_words, page| WikiReference.wiki_words(page) }.flatten.uniq + self.inject([]) { |wiki_words, page| + wiki_words + page.wiki_references.map { |ref| ref.referenced_page_name } + }.flatten.uniq end def authors diff --git a/app/models/web.rb b/app/models/web.rb index e3b2f7d0..62f88623 100644 --- a/app/models/web.rb +++ b/app/models/web.rb @@ -1,5 +1,5 @@ class Web < ActiveRecord::Base - has_many :pages#, :include => [:current_revision, :web] + has_many :pages def wiki Wiki.new diff --git a/lib/page_renderer.rb b/lib/page_renderer.rb index 23ab3e79..61428bd2 100644 --- a/lib/page_renderer.rb +++ b/lib/page_renderer.rb @@ -88,6 +88,7 @@ class PageRenderer def render(options = {}) result = WikiContent.new(@revision, @@url_generator, options).render! + WikiReference.delete_all ['page_id = ?', @revision.page_id] @revision.page.wiki_references.delete wiki_word_chunks = result.find_chunks(WikiChunk::WikiLink)