Sha256: 20a74ba07ac129e4a079781da1f9de5f45d716909e3cb7428f6c8952e4710173

Contents?: true

Size: 731 Bytes

Versions: 2

Compression:

Stored size: 731 Bytes

Contents

module QueryDiet
  class Logger
    class << self
      attr_accessor :queries, :bad_count, :bad_time

      def reset
        self.queries = []
      end

      def log(query)
        result = nil
        time = Benchmark.realtime do
          result = yield
        end
        queries << [query, time] if log_query?(query)
        result
      end

      def time
        (queries.sum(&:last) * 1000).to_i
      end

      def count
        queries.size
      end

      def bad?
        count >= bad_count or time >= bad_time
      end

      private

      def log_query?(query)
        query =~ /^(select|create|update|delete|insert)\b/i
      end
    end

    reset
    self.bad_count = 8
    self.bad_time = 5000
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
query_diet-0.3.1 lib/query_diet/logger.rb
query_diet-0.3.0 lib/query_diet/logger.rb