Sha256: dcc85f3ca89d2b7a4f0706b951f25f280a783f23b89c97d5a9e8ccb845ae61dc
Contents?: true
Size: 913 Bytes
Versions: 1
Compression:
Stored size: 913 Bytes
Contents
module QueryDiet class Logger DEFAULT_OPTIONS = { :bad_count => 8, :bad_time => 5000 } class << self attr_accessor :queries, :paused def reset self.queries = [] end def log(query) unless paused? result = nil time = Benchmark.realtime do result = yield end queries << [query, time] if log_query?(query) result end end def time (queries.sum(&:last) * 1000).to_i end def count queries.size end def bad?(options = {}) options = options.reverse_merge(DEFAULT_OPTIONS) count >= options[:bad_count] or time >= options[:bad_time] end def paused? paused end private def log_query?(query) query =~ /^(select|create|update|delete|insert)\b/i end end reset end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
query_diet-0.5.0 | lib/query_diet/logger.rb |