Class: AlacrityRails::Probe::MongoDriver

Inherits:
Object
  • Object
show all
Defined in:
lib/alacrity-rails/probe/mongo_driver.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.activateObject



4
5
6
7
8
# File 'lib/alacrity-rails/probe/mongo_driver.rb', line 4

def self.activate
  if defined?(Mongo)
    Mongo::Monitoring::Global.subscribe(Mongo::Monitoring::COMMAND, new)
  end
end

Instance Method Details

#start_eventsObject



10
11
12
# File 'lib/alacrity-rails/probe/mongo_driver.rb', line 10

def start_events
  @start_events ||= {}
end

#started(event) ⇒ Object



14
15
16
# File 'lib/alacrity-rails/probe/mongo_driver.rb', line 14

def started(event)
  start_events[event.operation_id] = { started_at: DateTime.now, command: event.command }
end

#succeeded(event) ⇒ Object Also known as: failed



18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/alacrity-rails/probe/mongo_driver.rb', line 18

def succeeded(event)
  finished = DateTime.now
  start_event = start_events.delete(event.operation_id)

  command = {}
  start_event[:command].each do |key, value|
    command[key] = value.respond_to?(:keys) ? value.keys : value
  end

  store(event.command_name, start_event[:started_at], finished, command)
rescue => error
  Logger.error("Alacrity mongo driver tracking failed: #{error.inspect}")
end