Class: Lono::Configset::Strategy::Base

Inherits:
Object
  • Object
show all
Extended by:
Memoist
Includes:
EvaluateFile, Template::Strategy::Dsl::Builder::Fn, Template::Strategy::Dsl::Builder::Helpers
Defined in:
lib/lono/configset/strategy/base.rb

Direct Known Subclasses

Dsl, Erb

Constant Summary

Constants included from Template::Strategy::Dsl::Builder::Fn

Template::Strategy::Dsl::Builder::Fn::FUNCTIONS

Instance Method Summary collapse

Methods included from Template::Strategy::Dsl::Builder::Fn

#conditional_ref, define_methods, #fn, #fn_id, #get_att, #get_azs, included, #join, #ref, #sub

Methods included from Template::Strategy::Common::Helpers

#extract_scripts, #scripts_name, #scripts_s3_path, #setting

Methods included from EvaluateFile

#evaluate_file

Constructor Details

#initialize(options = {}) ⇒ Base

Returns a new instance of Base.



28
29
30
31
32
33
34
# File 'lib/lono/configset/strategy/base.rb', line 28

def initialize(options={})
  @options = options
  @configset = options[:configset]
  @root = options[:root]
  @resource = options[:resource] || "FakeResource"
  @blueprint = Lono::Conventions.new(options).blueprint
end

Instance Method Details

#buildObject



36
37
38
39
40
41
42
# File 'lib/lono/configset/strategy/base.rb', line 36

def build
  @evaluation_path = find_evaluation_path # implemented by subclass
  copy_instance_variables
  load_configset_helpers
  init = load # implemented by subclass
  finish_full_structure(init)
end

#copy_instance_variablesObject



52
53
54
55
# File 'lib/lono/configset/strategy/base.rb', line 52

def copy_instance_variables
  load_blueprint_predefined_variables
  load_project_predefined_variables
end

#finish_full_structure(init) ⇒ Object



45
46
47
48
49
50
# File 'lib/lono/configset/strategy/base.rb', line 45

def finish_full_structure(init)
  full = {"Metadata" => {}}
  full["Metadata"]["AWS::CloudFormation::Init"] = init["AWS::CloudFormation::Init"]
  full["Metadata"]["AWS::CloudFormation::Authentication"] = authentication if authentication # only on dsl
  full.deep_stringify_keys!
end

#load_blueprint_predefined_variablesObject



57
58
59
# File 'lib/lono/configset/strategy/base.rb', line 57

def load_blueprint_predefined_variables
  evaluate_file("#{@root}/lib/variables.rb")
end

#load_configset_helpersObject



71
72
73
74
75
76
77
78
79
80
81
# File 'lib/lono/configset/strategy/base.rb', line 71

def load_configset_helpers
  paths = Dir.glob("#{@root}/lib/helpers/**/*.rb")
  paths.sort_by! { |p| p.size } # load possible namespaces first
  paths.each do |path|
    filename = path.sub(%r{.*/lib/helpers/},'').sub('.rb','')
    module_name = filename.camelize

    require path
    self.class.send :include, module_name.constantize
  end
end

#load_project_predefined_variablesObject



61
62
63
64
65
66
67
68
69
# File 'lib/lono/configset/strategy/base.rb', line 61

def load_project_predefined_variables
  paths = [
    "#{Lono.root}/configs/#{@blueprint}/configsets/variables.rb", # global
    "#{Lono.root}/configs/#{@blueprint}/configsets/variables/#{@configset}.rb", # configset specific
  ]
  paths.each do |path|
    evaluate_file(path)
  end
end