Class: OkComputer::MongoidCheck

Inherits:
Check
  • Object
show all
Defined in:
lib/ok_computer/built_in_checks/mongoid_check.rb

Constant Summary collapse

ConnectionFailed =
Class.new(StandardError)

Constants inherited from Check

Check::CheckNotDefined

Instance Attribute Summary collapse

Attributes inherited from Check

#failure_occurred, #message, #registrant_name, #time

Instance Method Summary collapse

Methods inherited from Check

#<=>, #clear, #mark_failure, #mark_message, #run, #success?, #to_json, #to_text, #with_benchmarking

Constructor Details

#initialize(session = :default) ⇒ MongoidCheck

Public: Initialize a check for a Mongoid replica set

session - The name of the Mongoid session to use. Defaults to the

default session.


9
10
11
12
13
14
15
16
17
# File 'lib/ok_computer/built_in_checks/mongoid_check.rb', line 9

def initialize(session = :default)
  if Mongoid.respond_to?(:clients) # Mongoid 5
    self.session = Mongoid::Clients.with_name(session)
  elsif Mongoid.respond_to?(:sessions) # Mongoid 4
    self.session = Mongoid::Sessions.with_name(session)
  end
rescue => e
  # client/session not configured
end

Instance Attribute Details

#sessionObject

Returns the value of attribute session.



3
4
5
# File 'lib/ok_computer/built_in_checks/mongoid_check.rb', line 3

def session
  @session
end

Instance Method Details

#checkObject

Public: Return the status of the mongodb



20
21
22
23
24
25
# File 'lib/ok_computer/built_in_checks/mongoid_check.rb', line 20

def check
  mark_message "Connected to mongodb #{mongodb_name}"
rescue ConnectionFailed => e
  mark_failure
  mark_message "Error: '#{e}'"
end

#mongodb_nameObject

Public: The name of the app’s mongodb

Returns a string with the mongdb name



45
46
47
# File 'lib/ok_computer/built_in_checks/mongoid_check.rb', line 45

def mongodb_name
  mongodb_stats["db"]
end

#mongodb_statsObject

Public: The stats for the app’s mongodb

Returns a hash with the status of the db



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/ok_computer/built_in_checks/mongoid_check.rb', line 30

def mongodb_stats
  if session
    stats = session.command(dbStats: 1) # Mongoid 3+
    stats = stats.first unless stats.is_a? Hash # Mongoid 5
    stats
  else
    Mongoid.database.stats # Mongoid 2
  end
rescue => e
  raise ConnectionFailed, e
end