module Praxis::Plugins::PraxisMapperPlugin::Statistics
Public Class Methods
detailed(identity_map)
click to toggle source
# File lib/praxis/plugins/praxis_mapper_plugin.rb, line 192 def self.detailed(identity_map) stats_by_model = identity_map.query_statistics.sum_totals_by_model stats_total = identity_map.query_statistics.sum_totals fields = [ :query_count, :records_loaded, :datastore_interactions, :datastore_interaction_time] rows = [] total_models_loaded = 0 # stats per model stats_by_model.each do |model, totals| total_values = totals.values_at(*fields) self.round_fields_at( total_values , [fields.index(:datastore_interaction_time)]) row = [ model ] + total_values models_loaded = identity_map.all(model).size total_models_loaded += models_loaded row << models_loaded rows << row end rows << :separator # totals for all models stats_total_values = stats_total.values_at(*fields) self.round_fields_at(stats_total_values , [fields.index(:datastore_interaction_time)]) rows << [ "All Models" ] + stats_total_values + [total_models_loaded] table = Terminal::Table.new \ :rows => rows, :title => "Praxis::Mapper Statistics", :headings => [ "Model", "# Queries", "Records Loaded", "Interactions", "Time(sec)", "Models Loaded" ] table.align_column(1, :right) table.align_column(2, :right) table.align_column(3, :right) table.align_column(4, :right) table.align_column(5, :right) self.to_logger "\n#{table.to_s}" end
log(request, identity_map, log_stats)
click to toggle source
# File lib/praxis/plugins/praxis_mapper_plugin.rb, line 173 def self.log(request, identity_map, log_stats) return if identity_map.nil? return if request.silence_mapper_stats == true if identity_map.queries.empty? self.to_logger "No database interactions observed." return end case log_stats when 'detailed' self.detailed(identity_map) when 'short' self.short(identity_map) when 'skip' # Shouldn't receive this. But anyway...no-op. end end
round_fields_at(values, indices)
click to toggle source
# File lib/praxis/plugins/praxis_mapper_plugin.rb, line 230 def self.round_fields_at(values, indices) indices.each do |idx| values[idx] = "%.3f" % values[idx] end end
short(identity_map)
click to toggle source
# File lib/praxis/plugins/praxis_mapper_plugin.rb, line 236 def self.short(identity_map) self.to_logger identity_map.query_statistics.sum_totals.to_s end
to_logger(message)
click to toggle source
# File lib/praxis/plugins/praxis_mapper_plugin.rb, line 240 def self.to_logger(message) Praxis::Application.instance.logger.__send__(Plugin.instance.config.stats_log_level, "Praxis::Mapper Statistics: #{message}") end