module ActiveRecord::Railties::ControllerRuntime

def append_info_to_payload(payload)

def append_info_to_payload(payload)
  super
  payload[:db_runtime] = (db_runtime || 0) + ActiveRecord::RuntimeRegistry.reset
end

def cleanup_view_runtime

def cleanup_view_runtime
  if logger && logger.info?
    db_rt_before_render = ActiveRecord::RuntimeRegistry.reset
    self.db_runtime = (db_runtime || 0) + db_rt_before_render
    runtime = super
    queries_rt = ActiveRecord::RuntimeRegistry.sql_runtime - ActiveRecord::RuntimeRegistry.async_sql_runtime
    db_rt_after_render = ActiveRecord::RuntimeRegistry.reset
    self.db_runtime += db_rt_after_render
    runtime - queries_rt
  else
    super
  end
end

def initialize(...) # :nodoc:

:nodoc:
def initialize(...) # :nodoc:
  super
  self.db_runtime = nil
end

def process_action(action, *args)

def process_action(action, *args)
  # We also need to reset the runtime before each action
  # because of queries in middleware or in cases we are streaming
  # and it won't be cleaned up by the method below.
  ActiveRecord::RuntimeRegistry.reset
  super
end