提交 845cbb4b 编写于 作者: L lsylvester 提交者: Kasper Timm Hansen

Avoid logging ActiveRecord::LogSubscriber as the query source when the source is ignored (#33455)

上级 45903be1
......@@ -100,9 +100,10 @@ def debug(progname = nil, &block)
end
def log_query_source
source_line, line_number = extract_callstack(caller_locations)
line = extract_callstack(caller_locations)
if source_line
if line
source_line, line_number = line.path, line.lineno
if defined?(::Rails.root)
app_root = "#{::Rails.root}/"
source_line = source_line.sub(app_root, "")
......@@ -113,23 +114,19 @@ def log_query_source
end
def extract_callstack(callstack)
line = callstack.find do |frame|
callstack.find do |frame|
frame.absolute_path && !ignored_callstack(frame.absolute_path)
end
offending_line = line || callstack.first
[
offending_line.path,
offending_line.lineno
]
end
RAILS_GEM_ROOT = File.expand_path("../../..", __dir__) + "/"
class_attribute :ignored_callstack_paths, default: [RAILS_GEM_ROOT, RbConfig::CONFIG["rubylibdir"]]
def ignored_callstack(path)
path.start_with?(RAILS_GEM_ROOT) ||
path.start_with?(RbConfig::CONFIG["rubylibdir"])
ignored_callstack_paths.any? do |ignored_path|
path.start_with?(ignored_path)
end
end
end
end
......
......@@ -177,11 +177,24 @@ def test_vebose_query_logs
logger = TestDebugLogSubscriber.new
logger.sql(Event.new(0, sql: "hi mom!"))
assert_equal 2, @logger.logged(:debug).size
assert_match(/↳/, @logger.logged(:debug).last)
ensure
ActiveRecord::Base.verbose_query_logs = false
end
def test_verbose_query_with_ignored_callstack
ActiveRecord::Base.verbose_query_logs = true
ActiveRecord::LogSubscriber.ignored_callstack_paths.push("/")
logger = TestDebugLogSubscriber.new
logger.sql(Event.new(0, sql: "hi mom!"))
assert_equal 1, @logger.logged(:debug).size
assert_no_match(/↳/, @logger.logged(:debug).last)
ensure
ActiveRecord::LogSubscriber.ignored_callstack_paths.delete("/")
ActiveRecord::Base.verbose_query_logs = false
end
def test_verbose_query_logs_disabled_by_default
logger = TestDebugLogSubscriber.new
logger.sql(Event.new(0, sql: "hi mom!"))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册