class ActionView::Template
def render(view, locals, buffer = nil, implicit_locals: [], add_to_stack: true, &block)
we use a bang in this instrumentation because you don't want to
This method is instrumented as "!render_template.action_view". Notice that
exactly before rendering.
Render a template. If the template was not compiled yet, it is done
def render(view, locals, buffer = nil, implicit_locals: [], add_to_stack: true, &block) instrument_render_template do compile!(view) if strict_locals? && @strict_local_keys && !implicit_locals.empty? locals_to_ignore = implicit_locals - @strict_local_keys locals.except!(*locals_to_ignore) end if buffer view._run(method_name, self, locals, buffer, add_to_stack: add_to_stack, has_strict_locals: strict_locals?, &block) nil else result = view._run(method_name, self, locals, OutputBuffer.new, add_to_stack: add_to_stack, has_strict_locals: strict_locals?, &block) result.is_a?(OutputBuffer) ? result.to_s : result end end rescue => e handle_render_error(view, e) end