Module: Marty::Diagnostic::Database

Defined in:
lib/marty/diagnostic/database.rb

Class Method Summary collapse

Class Method Details

.current_connectionsObject



43
44
45
# File 'lib/marty/diagnostic/database.rb', line 43

def self.current_connections
  get_postgres_connections[db_name]
end

.db_adapter_nameObject



10
11
12
# File 'lib/marty/diagnostic/database.rb', line 10

def self.db_adapter_name
  ActiveRecord::Base.connection.adapter_name
end

.db_nameObject



2
3
4
# File 'lib/marty/diagnostic/database.rb', line 2

def self.db_name
  ActiveRecord::Base.connection_config[:database]
end

.db_schemaObject



22
23
24
25
26
27
28
# File 'lib/marty/diagnostic/database.rb', line 22

def self.db_schema
  current = ActiveRecord::Migrator.current_version
  raise "Migration is needed.\nCurrent Version: #{current}" if
      ::Marty::RailsApp.needs_migration?

  current.to_s
end

.db_server_nameObject



6
7
8
# File 'lib/marty/diagnostic/database.rb', line 6

def self.db_server_name
  ActiveRecord::Base.connection_config[:host] || 'undefined'
end

.db_timeObject



14
15
16
# File 'lib/marty/diagnostic/database.rb', line 14

def self.db_time
  ActiveRecord::Base.connection.execute('SELECT NOW();')[0]['now']
end

.db_versionObject



18
19
20
# File 'lib/marty/diagnostic/database.rb', line 18

def self.db_version
  ActiveRecord::Base.connection.execute('SELECT VERSION();')[0]['version']
end

.get_postgres_connectionsObject



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/marty/diagnostic/database.rb', line 30

def self.get_postgres_connections
  conn = ActiveRecord::Base.connection.execute('SELECT datname,'\
                                               'application_name,'\
                                               'state,'\
                                               'pid,'\
                                               'client_addr '\
                                               'FROM pg_stat_activity')
  conn.each_with_object({}) do |conn, h|
    h[conn['datname']] ||= []
    h[conn['datname']] << conn.except('datname')
  end
end