Move start of profiling to a Document#render_to_output_buffer patch

This commit is contained in:
Dylan Thacker-Smith
2020-11-17 13:56:30 -05:00
parent b3f132efd1
commit 896288eff1
3 changed files with 10 additions and 9 deletions

View File

@@ -42,7 +42,7 @@ module Liquid
end
def render(context)
@body.render(context)
render_to_output_buffer(context, +'')
end
private

View File

@@ -14,6 +14,14 @@ module Liquid
end
BlockBody.prepend(BlockBodyProfilingHook)
module DocumentProfilingHook
def render_to_output_buffer(context, output)
return super unless context.profiler
context.profiler.profile { super }
end
end
Document.prepend(DocumentProfilingHook)
module ContextProfilingHook
attr_accessor :profiler

View File

@@ -199,9 +199,7 @@ module Liquid
begin
# render the nodelist.
with_profiling(context) do
@root.render_to_output_buffer(context, output || +'')
end
@root.render_to_output_buffer(context, output || +'')
rescue Liquid::MemoryError => e
context.handle_error(e)
ensure
@@ -224,11 +222,6 @@ module Liquid
Tokenizer.new(source, @line_numbers)
end
def with_profiling(context)
return yield unless context.profiler
context.profiler.profile { yield }
end
def apply_options_to_context(context, options)
context.add_filters(options[:filters]) if options[:filters]
context.global_filter = options[:global_filter] if options[:global_filter]