remove unnecessary count query for post_versions listing

This commit is contained in:
albert
2013-02-20 14:18:33 -05:00
parent 74aeb01418
commit 63394ef161
6 changed files with 90 additions and 3 deletions

View File

@@ -35,4 +35,5 @@ group :development do
gem 'ruby-prof'
gem 'pry'
gem 'awesome_print'
gem 'term-ansicolor'
end

View File

@@ -159,6 +159,7 @@ GEM
super_exception_notifier (3.0.13)
actionmailer
rake
term-ansicolor (1.0.7)
therubyracer (0.11.3)
libv8 (~> 3.11.8.12)
ref
@@ -207,6 +208,7 @@ DEPENDENCIES
simple_form
simplecov
super_exception_notifier
term-ansicolor
therubyracer
uglifier (>= 1.0.3)
whenever

View File

@@ -2,8 +2,7 @@ class PostVersionsController < ApplicationController
respond_to :html, :xml, :json
def index
@search = PostVersion.search(params[:search])
@post_versions = @search.order("updated_at desc").paginate(params[:page], :count => 1_000_000)
@post_versions = PostVersion.search(params[:search]).order("updated_at desc").paginate(params[:page], :count => 1_000_000)
respond_with(@post_versions)
end

View File

@@ -34,6 +34,7 @@ module PaginationHelper
1.upto(records.total_pages) do |page|
html << numbered_paginator_item(page, records.current_page)
end
elsif records.current_page <= window + 2
1.upto(records.current_page + window) do |page|
html << numbered_paginator_item(page, records.current_page)

View File

@@ -2,7 +2,7 @@
<div id="a-index">
<h1>Changes</h1>
<% if @post_versions.empty? %>
<% if @post_versions.all.empty? %>
<%= render "post_sets/blank" %>
<% else %>
<%= render "listing", :post_versions => @post_versions %>

View File

@@ -0,0 +1,84 @@
# yields a stacktrace for each SQL query
# put this file in config/initializers
class QueryTrace < ActiveSupport::LogSubscriber
include Term::ANSIColor
attr_accessor :trace_queries
def sql(event) #:nodoc:
return unless QueryTrace.enabled? && logger.debug? && Rails.env.development?
stack = Rails.backtrace_cleaner.clean(caller)
first_line = stack.shift
return unless first_line
msg = prefix + bold + cyan + "#{first_line}\n" + reset
msg += cyan + stack.join("\n") + reset
debug msg
end
# :call-seq:
# Klass.enabled?
#
# yields boolean if SQL queries should be logged or not
def self.enabled?
defined?(@trace_queries) && @trace_queries
end
# :call-seq:
# Klass.status
#
# yields text if QueryTrace has been enabled or not
def self.status
QueryTrace.enabled? ? 'enabled' : 'disabled'
end
# :call-seq:
# Klass.enable!
#
# turn on SQL query origin logging
def self.enable!
@trace_queries = true
end
# :call-seq:
# Klass.disable!
#
# turn off SQL query origin logging
def self.disable!
@trace_queries = false
end
# :call-seq:
# Klass.toggle!
#
# Toggles query tracing yielding a boolean indicating the new state of query
# origin tracing
def self.toggle!
enabled? ? disable! : enable!
enabled?
end
protected
def prefix #:nodoc:
bold(magenta('Called from: ')) + reset
end
end
QueryTrace.attach_to :active_record
trap('QUIT') do
# Sending 2 backspace characters removes the ^\ that is
# printed to the console.
rm_noise = "\b\b"
QueryTrace.toggle!
puts "#{rm_noise}=> QueryTrace #{QueryTrace.status}"
end
QueryTrace.enable! if ENV['QUERY_TRACE']
puts "=> QueryTrace #{QueryTrace.status}; CTRL-\\ to toggle"