Class: Kuby::Docker::WebserverPhase

Inherits:
Layer
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/kuby/docker/webserver_phase.rb

Defined Under Namespace

Classes: Puma, Webserver

Constant Summary collapse

DEFAULT_PORT =
T.let(8080, Integer)
WEBSERVER_MAP =
T.let({ puma: Puma }.freeze, T::Hash[Symbol, T.class_of(Webserver)])

Instance Attribute Summary collapse

Attributes inherited from Layer

#environment

Instance Method Summary collapse

Constructor Details

#initialize(environment) ⇒ WebserverPhase

Returns a new instance of WebserverPhase.



55
56
57
58
59
60
# File 'lib/kuby/docker/webserver_phase.rb', line 55

def initialize(environment)
  super

  @port = T.let(@port, T.nilable(Integer))
  @webserver = T.let(@webserver, T.nilable(Symbol))
end

Instance Attribute Details

#portObject



72
73
74
# File 'lib/kuby/docker/webserver_phase.rb', line 72

def port
  @port || DEFAULT_PORT
end

#webserverObject

Returns the value of attribute webserver.



49
50
51
# File 'lib/kuby/docker/webserver_phase.rb', line 49

def webserver
  @webserver
end

Instance Method Details

#apply_to(dockerfile) ⇒ Object



63
64
65
66
67
68
69
# File 'lib/kuby/docker/webserver_phase.rb', line 63

def apply_to(dockerfile)
  ws = webserver || default_webserver
  ws_class = WEBSERVER_MAP[T.must(ws)]
  raise "No webserver named #{ws}" unless ws_class

  ws_class.new(self).apply_to(dockerfile)
end