Class: Explorer::ProcessManager
- Inherits:
-
Object
- Object
- Explorer::ProcessManager
- Defined in:
- lib/explorer/process_manager.rb
Instance Method Summary collapse
- #add(label, command, working_dir: ENV['PWD']) ⇒ Object
- #exists?(label) ⇒ Boolean
-
#initialize(log_watcher = nil) ⇒ ProcessManager
constructor
A new instance of ProcessManager.
- #labels ⇒ Object
- #processes ⇒ Object
- #remove(label) ⇒ Object
- #restart(label) ⇒ Object
- #running?(label) ⇒ Boolean
- #start(label) ⇒ Object
- #stop(label) ⇒ Object
- #terminate ⇒ Object
Constructor Details
#initialize(log_watcher = nil) ⇒ ProcessManager
Returns a new instance of ProcessManager.
5 6 7 8 |
# File 'lib/explorer/process_manager.rb', line 5 def initialize log_watcher = nil @log_watcher = log_watcher @processes = {} end |
Instance Method Details
#add(label, command, working_dir: ENV['PWD']) ⇒ Object
16 17 18 19 |
# File 'lib/explorer/process_manager.rb', line 16 def add(label, command, working_dir: ENV['PWD']) env = load_env(working_dir) @processes[label] = Process.new(label, command, working_dir: working_dir, log_watcher: @log_watcher, env: env) end |
#exists?(label) ⇒ Boolean
42 43 44 |
# File 'lib/explorer/process_manager.rb', line 42 def exists?(label) !!@processes[label] end |
#labels ⇒ Object
55 56 57 |
# File 'lib/explorer/process_manager.rb', line 55 def labels @processes.keys end |
#processes ⇒ Object
51 52 53 |
# File 'lib/explorer/process_manager.rb', line 51 def processes @processes.values end |
#remove(label) ⇒ Object
21 22 23 24 25 |
# File 'lib/explorer/process_manager.rb', line 21 def remove(label) fail "Label is unknown" unless @processes[label] @processes[label].terminate @processes.delete label end |
#restart(label) ⇒ Object
37 38 39 40 |
# File 'lib/explorer/process_manager.rb', line 37 def restart(label) stop(label) start(label) end |
#running?(label) ⇒ Boolean
46 47 48 49 |
# File 'lib/explorer/process_manager.rb', line 46 def running?(label) fail "Label is unknown" unless @processes[label] @processes[label].started? end |
#start(label) ⇒ Object
27 28 29 30 |
# File 'lib/explorer/process_manager.rb', line 27 def start(label) fail "Label is unknown" unless @processes[label] @processes[label].start end |
#stop(label) ⇒ Object
32 33 34 35 |
# File 'lib/explorer/process_manager.rb', line 32 def stop(label) fail "Label is unknown" unless @processes[label] @processes[label].stop end |
#terminate ⇒ Object
10 11 12 13 14 |
# File 'lib/explorer/process_manager.rb', line 10 def terminate labels.each do |label| remove(label) end end |