Skip to content

Commit

Permalink
Enable verbose query logging
Browse files Browse the repository at this point in the history
This backports the rails/rails#26815
and enables that for non-Rails5 and non-production environments.
  • Loading branch information
ayufan committed Aug 7, 2018
1 parent e723882 commit cf04146
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions config/initializers/active_record_verbose_query_logs.rb
@@ -0,0 +1,54 @@
# frozen_string_literal: true

# This is backport of https://github.com/rails/rails/pull/26815/files
# Enabled by default for every non-production environment

module ActiveRecord
class LogSubscriber
module VerboseQueryLogs
def debug(progname = nil, &block)
return unless super

log_query_source
end

def log_query_source
source_line, line_number = extract_callstack(caller_locations)

if source_line
if defined?(::Rails.root)
app_root = "#{::Rails.root}/".freeze
source_line = source_line.sub(app_root, "")
end

logger.debug(" ↳ #{source_line}:#{line_number}")
end
end

def extract_callstack(callstack)
line = callstack.find do |frame|
frame.absolute_path && !ignored_callstack(frame.absolute_path)
end

offending_line = line || callstack.first
[
offending_line.path,
offending_line.lineno,
offending_line.label
]
end

LOG_SUBSCRIBER_FILE = ActiveRecord::LogSubscriber.method(:logger).source_location.first
RAILS_GEM_ROOT = File.expand_path("../../../..", LOG_SUBSCRIBER_FILE) + "/"
APP_CONFIG_ROOT = File.expand_path("..", __dir__) + "/"

def ignored_callstack(path)
path.start_with?(APP_CONFIG_ROOT, RAILS_GEM_ROOT, RbConfig::CONFIG["rubylibdir"])
end
end

unless Gitlab.rails5?
prepend(VerboseQueryLogs) unless Rails.env.production?
end
end
end

0 comments on commit cf04146

Please sign in to comment.