Class: Kuby::Docker::WebserverPhase

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

Defined Under Namespace

Classes: Puma, Webserver

Constant Summary collapse

DEFAULT_PORT =
8080
DEFAULT_WORKERS =
4
WEBSERVER_MAP =
{ puma: Puma }.freeze

Instance Attribute Summary collapse

Attributes inherited from Layer

#environment

Instance Method Summary collapse

Constructor Details

#initialize(environment) ⇒ WebserverPhase

T::Sig::WithoutRuntime.sig { override.params(environment: Environment).void }



59
60
61
62
63
64
65
# File 'lib/kuby/docker/webserver_phase.rb', line 59

def initialize(environment)
  super

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

Instance Attribute Details

#portObject

T::Sig::WithoutRuntime.sig { returns(Integer) }



77
78
79
# File 'lib/kuby/docker/webserver_phase.rb', line 77

def port
  @port || DEFAULT_PORT
end

#webserverObject

T::Sig::WithoutRuntime.sig { returns(T.nilable(Symbol)) }



53
54
55
# File 'lib/kuby/docker/webserver_phase.rb', line 53

def webserver
  @webserver
end

#workersObject

T::Sig::WithoutRuntime.sig { returns(Integer) }



82
83
84
# File 'lib/kuby/docker/webserver_phase.rb', line 82

def workers
  @workers || DEFAULT_WORKERS
end

Instance Method Details

#apply_to(dockerfile) ⇒ Object

T::Sig::WithoutRuntime.sig { override.params(dockerfile: Dockerfile).void }



68
69
70
71
72
73
74
# File 'lib/kuby/docker/webserver_phase.rb', line 68

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

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