27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/agent/server/instrument/rails.rb', line 27
def instrument
@obj = ManageEngine::APMObjectHolder.instance
@obj.log.info "Instrumenting ActionController.. Rails Version: #{version}"
@railsTracker = nil
ActiveSupport::Notifications.subscribe('start_processing.action_controller') do |name, start, finish, id, payload|
path = payload[:path].partition("?")[0]
@railsTracker = ManageEngine::Tracker::RootTracker.new("#{payload[:controller]}.#{payload[:action]}", start.to_f * 1000)
@railsTracker.url=(path)
@railsTracker = ManageEngine::Agent::TrackerHandler.invokeTracker(@railsTracker)
end
ActiveSupport::Notifications.subscribe('process_action.action_controller') do |name, start, finish, id, payload|
if @railsTracker != nil
@railsTracker.finish(finish.to_f * 1000)
exception = payload[:exception_object]
if exception != nil
@railsTracker.setError(exception)
@railsTracker.setStatus(500) end
ManageEngine::Agent::TrackerHandler.exitTracker(@railsTracker)
end
end
end
|