Class: Kuby::Docker::DevSpec
- Inherits:
-
Object
- Object
- Kuby::Docker::DevSpec
- Extended by:
- T::Sig
- Defined in:
- lib/kuby/docker/dev_spec.rb
Instance Attribute Summary collapse
-
#environment ⇒ Object
readonly
Returns the value of attribute environment.
Instance Method Summary collapse
- #cli ⇒ Object
- #delete(name) ⇒ Object
- #distro(distro_name) ⇒ Object
- #distro_spec ⇒ Object
- #exists?(name) ⇒ Boolean
-
#initialize(environment) ⇒ DevSpec
constructor
A new instance of DevSpec.
- #insert(name, layer = nil, options = {}, &block) ⇒ Object
- #metadata ⇒ Object
- #package(package_name, version = nil) ⇒ Object
- #package_phase ⇒ Object
- #port(port) ⇒ Object
- #previous_tag(current_tag) ⇒ Object
- #rails_env(env) ⇒ Object
- #setup_phase ⇒ Object
- #tag ⇒ Object
- #to_dockerfile ⇒ Object
- #use(name, layer = nil, &block) ⇒ Object
- #webserver_phase ⇒ Object
- #working_dir(dir) ⇒ Object
Constructor Details
#initialize(environment) ⇒ DevSpec
Returns a new instance of DevSpec.
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/kuby/docker/dev_spec.rb', line 38 def initialize(environment) @environment = environment @setup_phase = T.let(@setup_phase, T.nilable(SetupPhase)) @package_phase = T.let(@package_phase, T.nilable(PackagePhase)) @webserver_phase = T.let(@webserver_phase, T.nilable(WebserverDevPhase)) @metadata = T.let(@metadata, T.nilable(Metadata)) @distro_spec = T.let(@distro_spec, T.nilable(Distro)) @cli = T.let(@cli, T.nilable(CLI)) @tags = T.let(@tags, T.nilable(LocalTags)) @layer_stack = T.let(@layer_stack, T.nilable(Docker::LayerStack)) end |
Instance Attribute Details
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
35 36 37 |
# File 'lib/kuby/docker/dev_spec.rb', line 35 def environment @environment end |
Instance Method Details
#cli ⇒ Object
174 175 176 |
# File 'lib/kuby/docker/dev_spec.rb', line 174 def cli @cli ||= Docker::CLI.new end |
#delete(name) ⇒ Object
109 110 111 |
# File 'lib/kuby/docker/dev_spec.rb', line 109 def delete(name) layer_stack.delete(name) end |
#distro(distro_name) ⇒ Object
73 74 75 76 |
# File 'lib/kuby/docker/dev_spec.rb', line 73 def distro(distro_name) .distro = distro_name @distro_spec = nil end |
#distro_spec ⇒ Object
147 148 149 150 151 152 153 |
# File 'lib/kuby/docker/dev_spec.rb', line 147 def distro_spec @distro_spec ||= if distro_klass = Kuby.distros[.distro] distro_klass.new(self) else raise MissingDistroError, "distro '#{.distro}' hasn't been registered" end end |
#exists?(name) ⇒ Boolean
114 115 116 |
# File 'lib/kuby/docker/dev_spec.rb', line 114 def exists?(name) layer_stack.includes?(name) end |
#insert(name, layer = nil, options = {}, &block) ⇒ Object
104 105 106 |
# File 'lib/kuby/docker/dev_spec.rb', line 104 def insert(name, layer = nil, = {}, &block) layer_stack.insert(name, layer, , &block) end |
#metadata ⇒ Object
142 143 144 |
# File 'lib/kuby/docker/dev_spec.rb', line 142 def @metadata ||= Metadata.new(environment) end |
#package(package_name, version = nil) ⇒ Object
68 69 70 |
# File 'lib/kuby/docker/dev_spec.rb', line 68 def package(package_name, version = nil) package_phase.add(package_name, version) end |
#package_phase ⇒ Object
132 133 134 |
# File 'lib/kuby/docker/dev_spec.rb', line 132 def package_phase @package_phase ||= PackagePhase.new(environment) end |
#port(port) ⇒ Object
79 80 81 |
# File 'lib/kuby/docker/dev_spec.rb', line 79 def port(port) webserver_phase.port = port end |
#previous_tag(current_tag) ⇒ Object
169 170 171 |
# File 'lib/kuby/docker/dev_spec.rb', line 169 def previous_tag(current_tag) raise MissingTagError, 'cannot roll back in the development environment' end |
#rails_env(env) ⇒ Object
57 58 59 |
# File 'lib/kuby/docker/dev_spec.rb', line 57 def rails_env(env) setup_phase.rails_env = env end |
#setup_phase ⇒ Object
127 128 129 |
# File 'lib/kuby/docker/dev_spec.rb', line 127 def setup_phase @setup_phase ||= SetupPhase.new(environment) end |
#tag ⇒ Object
156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/kuby/docker/dev_spec.rb', line 156 def tag t = ENV.fetch('KUBY_DOCKER_TAG') do . end unless t raise MissingTagError, 'could not find latest timestamped tag' end t.to_s end |
#to_dockerfile ⇒ Object
119 120 121 122 123 124 |
# File 'lib/kuby/docker/dev_spec.rb', line 119 def to_dockerfile Dockerfile.new.tap do |df| layer_stack.each { |layer| layer.apply_to(df) } df.cmd("#{distro_spec.shell_exe} -c 'while test 1; do sleep 5; done'") end end |
#use(name, layer = nil, &block) ⇒ Object
91 92 93 |
# File 'lib/kuby/docker/dev_spec.rb', line 91 def use(name, layer = nil, &block) layer_stack.use(name, layer, &block) end |
#webserver_phase ⇒ Object
137 138 139 |
# File 'lib/kuby/docker/dev_spec.rb', line 137 def webserver_phase @webserver_phase ||= WebserverDevPhase.new(environment) end |
#working_dir(dir) ⇒ Object
52 53 54 |
# File 'lib/kuby/docker/dev_spec.rb', line 52 def working_dir(dir) setup_phase.working_dir = dir end |