class Metaparticle::Package
Public Class Methods
containerize(config, &block)
click to toggle source
# File lib/metaparticle/package.rb, line 9 def self.containerize(config, &block) new(config, &block) end
new(config, &block)
click to toggle source
# File lib/metaparticle/package.rb, line 13 def initialize(config, &block) @config = OpenStruct.new(config) @app = block run! end
Private Instance Methods
builder()
click to toggle source
# File lib/metaparticle/package.rb, line 43 def builder klass = @config.builder || 'docker' @builder ||= classify("#{klass}_builder").new(@config) end
classify(name)
click to toggle source
# File lib/metaparticle/package.rb, line 53 def classify(name) Object.const_get("Metaparticle::"+name.split('_').collect!{ |w| w.capitalize }.join) end
docker()
click to toggle source
# File lib/metaparticle/package.rb, line 39 def docker @docker ||= Docker.new end
run!()
click to toggle source
# File lib/metaparticle/package.rb, line 57 def run! if docker.in_docker_container? @app.call end @config.image = "#{@config.repository}/#{@config.name}" write_dockerfile builder.build builder.push runner.run return true end
runner()
click to toggle source
# File lib/metaparticle/package.rb, line 48 def runner klass = @config.runner || 'docker' @runner ||= classify("#{klass}_runner").new(@config) end
write_dockerfile()
click to toggle source
# File lib/metaparticle/package.rb, line 20 def write_dockerfile dockerfile = <<-DOCKERFILE FROM ruby:2.4-alpine RUN mkdir -p /#{@config.name} WORKDIR /#{@config.name} COPY Gemfile /#{@config.name}/ COPY Gemfile.lock /#{@config.name}/ RUN bundle install COPY . /#{@config.name}/ CMD ruby app.rb DOCKERFILE File.open("Dockerfile", "w") do |f| f.write(dockerfile) end end