class ActionCost::StatsCollector

Public Class Methods

new() click to toggle source
# File lib/action_cost/stats_collector.rb, line 3
def initialize
  @stats = {}
end

Public Instance Methods

data() click to toggle source
# File lib/action_cost/stats_collector.rb, line 16
def data
  @stats
end
log() click to toggle source
# File lib/action_cost/stats_collector.rb, line 12
def log
  pp @stats
end
push(request) click to toggle source
# File lib/action_cost/stats_collector.rb, line 7
def push(request)
  ca = controller_action_string(request)
  add_request(ca, request.operation_stats, request.table_stats)
end

Private Instance Methods

add_request(ca, operations, tables) click to toggle source
# File lib/action_cost/stats_collector.rb, line 21
def add_request(ca, operations, tables)
  if @stats[ca]
    @stats[ca][:num] += 1
  else
    @stats[ca] = { :num => 1, :operations => { :sql => {}, :rc => {} },
                              :tables     => { :sql => {}, :rc => {} } }
  end
  
  ActionCost::SqlParser::VALID_OPERATIONS.each do |op|
    increment_item(@stats[ca][:operations][:sql], op, operations[:sql][op])
    increment_item(@stats[ca][:operations][:rc],  op, operations[:rc][op])
  end

  tables[:sql].each_key do |table|
    increment_item(@stats[ca][:tables][:sql], table, tables[:sql][table])
  end
  tables[:rc].each_key do |table|
    increment_item(@stats[ca][:tables][:rc],  table, tables[:rc][table])
  end
end
controller_action_string(request) click to toggle source
# File lib/action_cost/stats_collector.rb, line 50
def controller_action_string(request)
  "#{request.controller_name}/#{request.action_name}"
end
increment_item(hash, item, val) click to toggle source
# File lib/action_cost/stats_collector.rb, line 42
def increment_item(hash, item, val)
  if hash[item]
    hash[item] += val
  else
    hash[item] = val
  end
end