Sha256: f9a84ce265826ed5264ecec675e86841951bb3e54ac0e1b0e1d6af58caed3e67

Contents?: true

Size: 760 Bytes

Versions: 6

Compression:

Stored size: 760 Bytes

Contents

module Simple
  module SQL
    module Logging
      extend self

      def yield_logged(sql, *args, &block)
        r0 = Time.now
        rv = yield
        realtime = Time.now - r0
        ::Simple::SQL.logger.debug "[sql] %.3f secs: %s" % [ realtime, format_query(sql, *args) ]
        rv
      rescue => e
        realtime = Time.now - r0
        ::Simple::SQL.logger.warn "[sql] %.3f secs: %s:\n\tfailed with error %s" % [ realtime, format_query(sql, *args), e.message ]
        raise
      end

      private

      def format_query(sql, *args)
        sql = sql.gsub(/\s*\n\s*/, " ").gsub(/(\A\s+)|(\s+\z)/, "")
        return sql if args.empty?
        args = args.map(&:inspect).join(", ")
        sql + " w/args: #{args}"
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
simple-sql-0.2.6 lib/simple/sql/logging.rb
simple-sql-0.2.5 lib/simple/sql/logging.rb
simple-sql-0.2.4 lib/simple/sql/logging.rb
simple-sql-0.2.3 lib/simple/sql/logging.rb
simple-sql-0.2.2 lib/simple/sql/logging.rb
simple-sql-0.2.1 lib/simple/sql/logging.rb