module RailsSqlCounter

Count sql queries

Constants

VERSION

Public Class Methods

counter() click to toggle source
# File lib/rails_sql_counter.rb, line 46
def self.counter
  Thread.current[:rails_sql_counter]
end
end() click to toggle source
# File lib/rails_sql_counter.rb, line 41
def self.end
  ActiveSupport::Notifications.unsubscribe(@@subscriber)
  @@subscriber = nil
end
profile(&block) click to toggle source
# File lib/rails_sql_counter.rb, line 34
def self.profile(&block)
  start
  block.call
ensure
  self.end
end
setup() { |self| ... } click to toggle source
# File lib/rails_sql_counter.rb, line 11
def self.setup
  yield self
end
start() click to toggle source
# File lib/rails_sql_counter.rb, line 26
def self.start
  Thread.current[:rails_sql_counter] = 0

  @@subscriber ||= ActiveSupport::Notifications.subscribe('sql.active_record') do |event|
    process(event)
  end
end

Private Class Methods

inc() click to toggle source
# File lib/rails_sql_counter.rb, line 22
def self.inc
  Thread.current[:rails_sql_counter] += 1
end
process(event) click to toggle source
# File lib/rails_sql_counter.rb, line 15
def self.process(event)
  return unless event.payload[:name]&.match?('Load') && Thread.current[:rails_sql_counter]

  inc
  show_backtrace if @@backtrace
end
show_backtrace() click to toggle source
# File lib/rails_sql_counter.rb, line 50
def self.show_backtrace
  # remove first two entries (gem entries)
  caller.drop(2).each do |line|
    next if line.match?(@@backtrace_regex)

    Rails.logger.debug "    -> #{line}"
  end
end