Module: Praxis::Plugins::PraxisMapperPlugin::Statistics
- Defined in:
- lib/praxis/plugins/praxis_mapper_plugin.rb
Class Method Summary collapse
- .detailed(identity_map) ⇒ Object
- .log(request, identity_map, log_stats) ⇒ Object
- .round_fields_at(values, indices) ⇒ Object
- .short(identity_map) ⇒ Object
- .to_logger(message) ⇒ Object
Class Method Details
.detailed(identity_map) ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 173 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) ⇒ Object
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 154 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) ⇒ Object
211 212 213 214 215 |
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 211 def self.round_fields_at(values, indices) indices.each do |idx| values[idx] = "%.3f" % values[idx] end end |
.short(identity_map) ⇒ Object
217 218 219 |
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 217 def self.short(identity_map) self.to_logger identity_map.query_statistics.sum_totals.to_s end |
.to_logger(message) ⇒ Object
221 222 223 |
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 221 def self.to_logger() Praxis::Application.instance.logger.__send__(Plugin.instance.config.stats_log_level, "Praxis::Mapper Statistics: #{}") end |