class Devup::Compose
Attributes
logger[R]
path[R]
project[R]
shell[R]
Public Class Methods
new(path, project: "devup", logger:, shell:)
click to toggle source
# File lib/devup/compose.rb, line 11 def initialize(path, project: "devup", logger:, shell:) @path = path @project = project @logger = logger @shell = shell end
Public Instance Methods
check()
click to toggle source
# File lib/devup/compose.rb, line 18 def check true end
port_mapping(port)
click to toggle source
# File lib/devup/compose.rb, line 32 def port_mapping(port) ComposeHelpers::Ps.new(exec_ps_cached).port_mapping(port) end
rm()
click to toggle source
# File lib/devup/compose.rb, line 46 def rm exec "rm -f" end
service_ports(name)
click to toggle source
# File lib/devup/compose.rb, line 26 def service_ports(name) return [] if config["services"][name]["ports"].nil? config["services"][name]["ports"].map { |el| el.to_s.split(":")[-1].to_i } end
services()
click to toggle source
# File lib/devup/compose.rb, line 22 def services config["services"].keys end
stop()
click to toggle source
# File lib/devup/compose.rb, line 42 def stop exec "stop" end
up()
click to toggle source
# File lib/devup/compose.rb, line 36 def up exec "up -d --remove-orphans" wait_alive 3 end
Private Instance Methods
alive?()
click to toggle source
# File lib/devup/compose.rb, line 66 def alive? ComposeHelpers::Ps.new(exec_ps).up? end
config()
click to toggle source
# File lib/devup/compose.rb, line 86 def config YAML.safe_load(config_content) end
config_content()
click to toggle source
# File lib/devup/compose.rb, line 90 def config_content File.read(path) end
exec(cmd)
click to toggle source
# File lib/devup/compose.rb, line 78 def exec(cmd) resp = shell.exec "docker-compose -p #{project} -f #{path} #{cmd}" raise(Error) unless resp.success? resp.data end
exec_ps()
click to toggle source
# File lib/devup/compose.rb, line 70 def exec_ps @exec_ps_output = exec("ps") end
exec_ps_cached()
click to toggle source
# File lib/devup/compose.rb, line 74 def exec_ps_cached @exec_ps_output ||= exec("ps") end
wait_alive(timeout, retry_sleep: 0.3)
click to toggle source
# File lib/devup/compose.rb, line 52 def wait_alive(timeout, retry_sleep: 0.3) start = Time.now loop { break if alive? if Time.now - start > timeout logger.error "can't run services" break end sleep retry_sleep } end