123456789_123456789_123456789_123456789_123456789_

Module: ActionController::Instrumentation

Relationships & Source Files
Namespace Children
Modules:
Extension / Inclusion / Inheritance Descendants
Included In:
API, Base, ::ActionView::TestCase::TestController, Rails::ApplicationController, ::Rails::HealthController, Rails::InfoController, Rails::MailersController, Rails::PwaController, Rails::WelcomeController
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Defined in: actionpack/lib/action_controller/metal/instrumentation.rb

Overview

Adds instrumentation to several ends in Base. It also provides some hooks related with process_action. This allows an ORM like Active Record and/or DataMapper to plug in ::ActionController and show related information.

Check ::ActiveRecord::Railties::ControllerRuntime for an example.

::AbstractController::Logger - Attributes & Methods

Class Method Summary

::ActiveSupport::Concern - Extended

class_methods

Define class methods from given block.

included

Evaluate given block in context of base class, so that you can write class macros here.

prepended

Evaluate given block in context of base class, so that you can write class macros here.

Instance Attribute Summary

Instance Method Summary

::ActiveSupport::Benchmarkable - self

#benchmark

Allows you to measure the execution time of a block in a template and records the result to the log.

Class Attribute Details

.logger (rw)

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/logger.rb', line 12

config_accessor :logger

Instance Attribute Details

#logger (rw)

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/logger.rb', line 12

config_accessor :logger

#view_runtime (rw)

[ GitHub ]

  
# File 'actionpack/lib/action_controller/metal/instrumentation.rb', line 22

attr_internal :view_runtime

Instance Method Details

#redirect_to

[ GitHub ]

  
# File 'actionpack/lib/action_controller/metal/instrumentation.rb', line 50

def redirect_to(*)
  ActiveSupport::Notifications.instrument("redirect_to.action_controller", request: request) do |payload|
    result = super
    payload[:status]   = response.status
    payload[:location] = response.filtered_location
    result
  end
end

#render

[ GitHub ]

  
# File 'actionpack/lib/action_controller/metal/instrumentation.rb', line 29

def render(*)
  render_output = nil
  self.view_runtime = cleanup_view_runtime do
    Benchmark.ms { render_output = super }
  end
  render_output
end

#send_data(data, options = {})

[ GitHub ]

  
# File 'actionpack/lib/action_controller/metal/instrumentation.rb', line 44

def send_data(data, options = {})
  ActiveSupport::Notifications.instrument("send_data.action_controller", options) do
    super
  end
end

#send_file(path, options = {})

[ GitHub ]

  
# File 'actionpack/lib/action_controller/metal/instrumentation.rb', line 37

def send_file(path, options = {})
  ActiveSupport::Notifications.instrument("send_file.action_controller",
    options.merge(path: path)) do
    super
  end
end