class Praxis::Plugins::RailsPlugin::Plugin
Public Instance Methods
Source
# File lib/praxis/plugins/rails_plugin.rb, line 12 def setup! require 'praxis/dispatcher' enable_action_controller_instrumentation end
Private Instance Methods
Source
# File lib/praxis/plugins/rails_plugin.rb, line 19 def enable_action_controller_instrumentation Praxis::Dispatcher.class_eval do # Wrap the original action dispatch with a method that instruments rails-expected bits... alias_method :orig_instrumented_dispatch, :instrumented_dispatch def instrumented_dispatch(praxis_payload) rails_payload = { controller: controller.class.name, action: action.name, params: (request.params ? request.params.dump : {}), method: request.verb, path: begin request.fullpath rescue StandardError 'unknown' end } Praxis::Notifications.instrument('start_processing.action_controller', rails_payload.dup) Praxis::Notifications.instrument 'process_action.action_controller' do |data| res = orig_instrumented_dispatch(praxis_payload) # TODO: also add the db_runtime and view_runtime values... data[:status] = res[0] res # Append DB runtime to payload # data[:db_runtime] = 999 # Append rendering time to payload # data[:view_runtime] = 123 end end end end
Source
# File lib/praxis/plugins/rails_plugin.rb, line 24 def instrumented_dispatch(praxis_payload) rails_payload = { controller: controller.class.name, action: action.name, params: (request.params ? request.params.dump : {}), method: request.verb, path: begin request.fullpath rescue StandardError 'unknown' end } Praxis::Notifications.instrument('start_processing.action_controller', rails_payload.dup) Praxis::Notifications.instrument 'process_action.action_controller' do |data| res = orig_instrumented_dispatch(praxis_payload) # TODO: also add the db_runtime and view_runtime values... data[:status] = res[0] res # Append DB runtime to payload # data[:db_runtime] = 999 # Append rendering time to payload # data[:view_runtime] = 123 end end