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