class Explorer::ProcessManager
Public Class Methods
new(options={})
click to toggle source
# File lib/explorer/process_manager.rb, line 6 def initialize options={} @log_watcher = options.fetch(:log_watcher) { Explorer.log_watcher } @processes = {} end
Public Instance Methods
add(label, command, working_dir: ENV['PWD'])
click to toggle source
# File lib/explorer/process_manager.rb, line 17 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)
click to toggle source
# File lib/explorer/process_manager.rb, line 43 def exists?(label) !!@processes[label] end
labels()
click to toggle source
# File lib/explorer/process_manager.rb, line 56 def labels @processes.keys end
load(file)
click to toggle source
# File lib/explorer/process_manager.rb, line 60 def load file return unless File.exist? file yaml = YAML.load_file file yaml.each do |cfg| add(cfg[:label], cfg[:command], working_dir: cfg[:working_dir]) end end
processes()
click to toggle source
# File lib/explorer/process_manager.rb, line 52 def processes @processes.values end
remove(label)
click to toggle source
# File lib/explorer/process_manager.rb, line 22 def remove(label) fail "Label is unknown" unless @processes[label] @processes[label].terminate @processes.delete label end
restart(label)
click to toggle source
# File lib/explorer/process_manager.rb, line 38 def restart(label) stop(label) start(label) end
running?(label)
click to toggle source
# File lib/explorer/process_manager.rb, line 47 def running?(label) fail "Label is unknown" unless @processes[label] @processes[label].started? end
save(file)
click to toggle source
# File lib/explorer/process_manager.rb, line 69 def save file Dir.mkdir File.dirname(file) unless Dir.exist?(File.dirname(file)) File.write file, YAML.dump(processes.map do |p| { label: p.label, command: p.command, working_dir: p.working_dir } end) end
start(label)
click to toggle source
# File lib/explorer/process_manager.rb, line 28 def start(label) fail "Label is unknown" unless @processes[label] @processes[label].start end
stop(label)
click to toggle source
# File lib/explorer/process_manager.rb, line 33 def stop(label) fail "Label is unknown" unless @processes[label] @processes[label].stop end
terminate()
click to toggle source
# File lib/explorer/process_manager.rb, line 11 def terminate labels.each do |label| remove(label) end end
Private Instance Methods
load_env(directory = ENV['PWD'])
click to toggle source
# File lib/explorer/process_manager.rb, line 82 def load_env(directory = ENV['PWD']) path = File.expand_path File.join(directory, '.env') return {} unless File.exist?(path) Dotenv::Environment.new(path) end