Sha256: a390a9df0058d3342b6dc2cea6db6a9dd82ec98010836825e006cb13f0b4fcea

Contents?: true

Size: 842 Bytes

Versions: 12

Compression:

Stored size: 842 Bytes

Contents

# rubocop:disable Metrics/AbcSize
# rubocop:disable Metrics/LineLength

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 StandardError => 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

12 entries across 12 versions & 1 rubygems

Version Path
simple-sql-0.3.7 lib/simple/sql/logging.rb
simple-sql-0.3.6 lib/simple/sql/logging.rb
simple-sql-0.3.5 lib/simple/sql/logging.rb
simple-sql-0.3.4 lib/simple/sql/logging.rb
simple-sql-0.3.3 lib/simple/sql/logging.rb
simple-sql-0.2.10 lib/simple/sql/logging.rb
simple-sql-0.3.2 lib/simple/sql/logging.rb
simple-sql-0.2.9 lib/simple/sql/logging.rb
simple-sql-0.3.1 lib/simple/sql/logging.rb
simple-sql-0.2.8 lib/simple/sql/logging.rb
simple-sql-0.3.0 lib/simple/sql/logging.rb
simple-sql-0.2.7 lib/simple/sql/logging.rb