Class: TingYun::Instrumentation::Rails::ControllerEvent

Inherits:
Support::Event
  • Object
show all
Includes:
Support::SplitController
Defined in:
lib/ting_yun/instrumentation/support/action_controller_subscriber.rb

Constant Summary

Constants included from Support::SplitController

Support::SplitController::HTTP, Support::SplitController::RULE

Instance Attribute Summary collapse

Attributes included from Support::SplitController

#rule, #tingyun_http_verb

Attributes inherited from Support::Event

#children, #end, #frame, #name, #payload, #time, #transaction_id

Instance Method Summary collapse

Methods included from Support::SplitController

#dot_flattened, #find_rule, #method_match?, #name, #namespace, #params_match?, #raise_error, #rules, #split_header, #split_method, #split_params, #split_url, #url_match?

Methods inherited from Support::Event

#<<, #duration, #parent_of?

Constructor Details

#initialize(name, start, ending, transaction_id, payload, request) ⇒ ControllerEvent

Returns a new instance of ControllerEvent.



63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 63

def initialize(name, start, ending, transaction_id, payload, request)
  # We have a different initialize parameter[[j]] list, so be explicit
  super(name, start, ending, transaction_id, payload, nil)

  @request = request
  @controller_class = payload[:controller].split('::') \
    .inject(Object) { |m, o| m.const_get(o) }

  if request && request.respond_to?(:env)
    @queue_start = TingYun::Instrumentation::Support::QueueTime.parse_frontend_timestamp(request.env, self.time)
  end
end

Instance Attribute Details

#parentObject

Returns the value of attribute parent.



60
61
62
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 60

def parent
  @parent
end

#queue_startObject (readonly)

Returns the value of attribute queue_start.



61
62
63
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 61

def queue_start
  @queue_start
end

#requestObject (readonly)

Returns the value of attribute request.



61
62
63
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 61

def request
  @request
end

Instance Method Details

#methodObject



88
89
90
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 88

def method
  payload[:params]['_method'].upcase rescue nil ||  payload[:method]
end

#metric_actionObject



104
105
106
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 104

def metric_action
  payload[:action]
end

#metric_classObject



100
101
102
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 100

def metric_class
  payload[:controller]
end

#metric_nameObject



76
77
78
79
80
81
82
83
84
85
86
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 76

def metric_name
  if TingYun::Agent.config[:'naming.rules_enabled'] && find_rule(method, uri, request.header, params)
    @metric_name =  "WebAction/Rails/#{namespace}/#{name(uri, request.header, params, request.cookie)}"
  else
    if TingYun::Agent.config[:'nbs.auto_action_naming']
      @metric_name ||= "WebAction/Rails/#{metric_path}%2F#{metric_action}"
    else
      "WebAction/URI/#{uri[1..-1].gsub(/\//,'%2F')}"
    end
  end
end

#metric_pathObject



96
97
98
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 96

def metric_path
  @controller_class.controller_path
end

#paramsObject



92
93
94
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 92

def params
  payload[:params]
end

#pathObject

contain the params



114
115
116
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 114

def path
  payload[:path]
end

#to_sObject



118
119
120
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 118

def to_s
  "#<TingYun::Instrumentation::ControllerEvent:#{object_id} name: \"#{name}\" id: #{transaction_id} payload: #{payload}}>"
end

#uriObject

expect the params



109
110
111
# File 'lib/ting_yun/instrumentation/support/action_controller_subscriber.rb', line 109

def uri
  path.split('?').first
end