class Takeoff::Plan::Base

Public Class Methods

build_plan(name, &block) click to toggle source
# File lib/takeoff/plan/base.rb, line 10
def build_plan(name, &block)
  plan = Class.new(self, &block)
  Plan.const_set(name.to_s.camelize, plan)
end
env() click to toggle source
# File lib/takeoff/plan/base.rb, line 23
def env
  @env ||= default_env
end
launch(env = {}) click to toggle source
# File lib/takeoff/plan/base.rb, line 27
def launch(env = {})
  new.launch(env)
end
stages(&block) click to toggle source
# File lib/takeoff/plan/base.rb, line 15
def stages(&block)
  @stages ||= default_stages

  @stages.instance_eval(&block) if block

  @stages
end

Private Class Methods

base?() click to toggle source
# File lib/takeoff/plan/base.rb, line 32
def base?
  self.superclass == ::Object
end
default_env() click to toggle source
# File lib/takeoff/plan/base.rb, line 45
def default_env
  env = if base?
    {}
  else
    self.superclass.env.dup
  end

  env.merge!(plan: self)
end
default_stages() click to toggle source
# File lib/takeoff/plan/base.rb, line 36
def default_stages
  if base?
    Middleware::Builder.new
  else
    parent_stages = self.superclass.stages
    Middleware::Builder.new { use parent_stages }
  end
end

Public Instance Methods

launch(env = {}) click to toggle source
# File lib/takeoff/plan/base.rb, line 56
def launch(env = {})
  env = self.class.env.merge(env)
  self.class.stages.call(env)
end