Sha256: 6cc1d9fea905eed7431afe87a7b9106fae404e5bf5aebb45e35ba0f48ab3f768

Contents?: true

Size: 724 Bytes

Versions: 5

Compression:

Stored size: 724 Bytes

Contents

module QueryDiet
  class Logger
    class << self

      attr_accessor :count, :time, :bad_count, :bad_time

      def reset
        self.count = 0
        self.time = 0
      end

      def log(query, &execution)
        result = nil
        seconds = Benchmark.realtime do
          result = execution.call
        end
        if log_query?(query)
          self.time += (seconds * 1000).to_i
          self.count += 1
        end
        result
      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

5 entries across 5 versions & 1 rubygems

Version Path
query_diet-0.2.3 lib/query_diet/logger.rb
query_diet-0.2.2 lib/query_diet/logger.rb
query_diet-0.2.1 lib/query_diet/logger.rb
query_diet-0.2.0 lib/query_diet/logger.rb
query_diet-0.1.0 lib/query_diet/logger.rb