Class: ManageEngine::Instrumentation::RailsFramework

Inherits:
Object
  • Object
show all
Defined in:
lib/agent/server/instrument/rails.rb

Instance Method Summary collapse

Instance Method Details

#envObject



15
16
17
18
19
20
21
# File 'lib/agent/server/instrument/rails.rb', line 15

def env
  if Rails::VERSION::MAJOR >= 3 
    ::Rails.env
  else
    RAILS_ENV.dup
  end
end

#instrumentObject



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 # subscribe
  
  
  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) # By default, set 500 as status for error txns
      end
      ManageEngine::Agent::TrackerHandler.exitTracker(@railsTracker)
    end
  end
  
end

#nameObject



23
24
25
# File 'lib/agent/server/instrument/rails.rb', line 23

def name
  'Rails'
end

#present?Boolean

Returns:

  • (Boolean)


7
8
9
# File 'lib/agent/server/instrument/rails.rb', line 7

def present?
  defined?(::Rails) && defined?(::ActionController)
end

#versionObject



11
12
13
# File 'lib/agent/server/instrument/rails.rb', line 11

def version
  Rails::VERSION::STRING
end