Class: NetuitiveRailsAgent::ActionControllerSub

Inherits:
Object
  • Object
show all
Defined in:
lib/netuitive_rails_agent/action_controller.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(interaction) ⇒ ActionControllerSub

Returns a new instance of ActionControllerSub.



13
14
15
# File 'lib/netuitive_rails_agent/action_controller.rb', line 13

def initialize(interaction)
  @interaction = interaction
end

Instance Attribute Details

#interactionObject (readonly)

Returns the value of attribute interaction.



11
12
13
# File 'lib/netuitive_rails_agent/action_controller.rb', line 11

def interaction
  @interaction
end

Instance Method Details

#expire_fragmentObject



78
79
80
# File 'lib/netuitive_rails_agent/action_controller.rb', line 78

def expire_fragment
  interaction.aggregate_metric('action_controller.expire_fragment', 1)
end

#expire_pageObject



86
87
88
# File 'lib/netuitive_rails_agent/action_controller.rb', line 86

def expire_page
  interaction.aggregate_metric('action_controller.expire_page', 1)
end

#halted_callbackObject



98
99
100
# File 'lib/netuitive_rails_agent/action_controller.rb', line 98

def halted_callback
  interaction.aggregate_metric('action_controller.halted_callback', 1)
end

#process_action(*args) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/netuitive_rails_agent/action_controller.rb', line 47

def process_action(*args)
  NetuitiveRailsAgent::ErrorLogger.guard('error during process_action') do
    event = ActiveSupport::Notifications::Event.new(*args)
    controller = event.payload[:controller].to_s
    action = event.payload[:action].to_s
    ac_whitelist_string = NetuitiveRailsAgent::ConfigManager.action_controller_whitelist
    if controller =~ /#{ac_whitelist_string}/
      interaction.add_sample("action_controller.#{controller}.#{action}.request.total_duration", event.duration)
      interaction.add_sample("action_controller.#{controller}.#{action}.request.query_time", event.payload[:db_runtime])
      interaction.add_sample("action_controller.#{controller}.#{action}.request.view_time", event.payload[:view_runtime])
      interaction.add_sample("action_controller.#{controller}.request.total_duration", event.duration)
      interaction.add_sample("action_controller.#{controller}.request.query_time", event.payload[:db_runtime])
      interaction.add_sample("action_controller.#{controller}.request.view_time", event.payload[:view_runtime])
      interaction.aggregate_metric("action_controller.#{controller}.#{action}.total_requests", 1)
      interaction.aggregate_metric("action_controller.#{controller}.total_requests", 1)
    end
    interaction.add_sample('action_controller.request.total_duration', event.duration)
    interaction.add_sample('action_controller.request.query_time', event.payload[:db_runtime])
    interaction.add_sample('action_controller.request.view_time', event.payload[:view_runtime])
    interaction.aggregate_metric('action_controller.total_requests', 1)
  end
end

#read_fragmentObject



74
75
76
# File 'lib/netuitive_rails_agent/action_controller.rb', line 74

def read_fragment
  interaction.aggregate_metric('action_controller.read_fragment', 1)
end

#redirect_toObject



94
95
96
# File 'lib/netuitive_rails_agent/action_controller.rb', line 94

def redirect_to
  interaction.aggregate_metric('action_controller.redirect', 1)
end

#send_fileObject



90
91
92
# File 'lib/netuitive_rails_agent/action_controller.rb', line 90

def send_file
  interaction.aggregate_metric('action_controller.sent_file', 1)
end

#subscribeObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/netuitive_rails_agent/action_controller.rb', line 17

def subscribe
  ActiveSupport::Notifications.subscribe(/process_action.action_controller/) do |*args|
    process_action(*args)
  end
  ActiveSupport::Notifications.subscribe(/write_fragment.action_controller/) do |*_args|
    write_fragment
  end
  ActiveSupport::Notifications.subscribe(/read_fragment.action_controller/) do |*_args|
    read_fragment
  end
  ActiveSupport::Notifications.subscribe(/expire_fragment.action_controller/) do |*_args|
    expire_fragment
  end
  ActiveSupport::Notifications.subscribe(/write_page.action_controller/) do |*_args|
    write_page
  end
  ActiveSupport::Notifications.subscribe(/expire_page.action_controller/) do |*_args|
    expire_page
  end
  ActiveSupport::Notifications.subscribe(/send_file.action_controller/) do |*_args|
    send_file
  end
  ActiveSupport::Notifications.subscribe(/redirect_to.action_controller/) do |*_args|
    redirect_to
  end
  ActiveSupport::Notifications.subscribe(/halted_callback.action_controller/) do |*_args|
    halted_callback
  end
end

#write_fragmentObject



70
71
72
# File 'lib/netuitive_rails_agent/action_controller.rb', line 70

def write_fragment
  interaction.aggregate_metric('action_controller.write_fragment', 1)
end

#write_pageObject



82
83
84
# File 'lib/netuitive_rails_agent/action_controller.rb', line 82

def write_page
  interaction.aggregate_metric('action_controller.write_page', 1)
end