Module: ProcessObserver

Includes:
Exceptions
Defined in:
lib/process_observer.rb,
lib/process_observer/os.rb,
lib/process_observer/log.rb,
lib/process_observer/main.rb,
lib/process_observer/linux.rb,
lib/process_observer/process.rb,
lib/process_observer/version.rb,
lib/process_observer/windows.rb,
lib/process_observer/exceptions.rb

Overview

Module containing everything.

Defined Under Namespace

Modules: Exceptions, Linux, Log, OS, Windows Classes: LinuxProcess, Process, WindowsProcess

Constant Summary collapse

VERSION =

Module version.

"0.1.1"

Class Method Summary collapse

Class Method Details

.allArray<Process>

List of all active processes.

Returns:



7
8
9
10
11
12
13
14
15
16
# File 'lib/process_observer/main.rb', line 7

def self.all
  case
    when OS.windows?
      Windows.call
    when OS.linux?
      Linux.call
    else
      raise UnsupportedPlatformError, "This platform is currently unsupported", caller
  end
end

.runningArray<Process>

List of all running processes.

Returns:



22
23
24
25
26
27
28
29
30
31
# File 'lib/process_observer/main.rb', line 22

def self.running
  case
    when OS.windows?
      Windows.call(fi: "STATUS eq RUNNING")
    when OS.linux?
      Linux.call.select { |process| process.status.include?("R") }
    else
      raise UnsupportedPlatformError, "This platform is currently unsupported", caller
  end
end

.this(process_list = nil) ⇒ Process?

Requests info about current Ruby process.

Parameters:

  • process_list (Array<Process>, nil) (defaults to: nil)

    previously saved array of processes or nil if you want to request all processes in this method.

Returns:

  • (Process, nil)

    nil may be returned if process not found in provided process list.

Raises:



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/process_observer/main.rb', line 40

def self.this(process_list = nil)
  pid = ::Process.pid

  if process_list
    return process_list.find { |process| process.pid == pid }
  end

  case
    when OS.windows?
      arr = Windows.call(fi: "PID eq #{pid}")
    when OS.linux?
      arr = Linux.call.select { |process| process.pid == pid }
    else
      raise UnsupportedPlatformError, "This platform is currently unsupported", caller
  end
  raise MultipleProcessError, "Expected single process, got: #{arr.size}", caller if arr.size != 1
  arr[0]
end

.used_memory(process_list = nil) ⇒ Integer

Get total used memory.

Parameters:

  • process_list (Array<Process>, nil) (defaults to: nil)

    previously saved array of processes or nil if you want to request all processes in this method.

Returns:

  • (Integer)

    used memory in KB.



66
67
68
69
# File 'lib/process_observer/main.rb', line 66

def self.used_memory(process_list = nil)
  arr = process_list ? process_list : self.all
  arr.sum(0, &:memory)
end