require 'active_support/core_ext/module/attr_internal' module Scrivito module ControllerRuntime extend ActiveSupport::Concern protected attr_internal :scrivito_runtime def cleanup_view_runtime self.scrivito_runtime = reset_scrivito_runtime runtime = super scrivito_rt_after_render = reset_scrivito_runtime self.scrivito_runtime += scrivito_rt_after_render runtime - scrivito_rt_after_render end def append_info_to_payload(payload) super payload[:scrivito_runtime] = (self.scrivito_runtime || 0) + reset_scrivito_runtime end module ClassMethods def log_process_action(payload) messages, scrivito_runtime = super, payload[:scrivito_runtime] messages << ("Scrivito: %.1fms" % scrivito_runtime.to_f) messages end end def reset_scrivito_runtime Scrivito::LogSubscriber.reset_runtime end end end # module Scrivito