Class: Jets::Stack
- Inherits:
-
Object
show all
- Extended by:
- Memoist
- Includes:
- Main::Dsl, Output::Dsl, Parameter::Dsl, Resource::Dsl
- Defined in:
- lib/jets/stack/output.rb,
lib/jets/stack.rb,
lib/jets/stack/main.rb,
lib/jets/stack/builder.rb,
lib/jets/stack/function.rb,
lib/jets/stack/main/dsl.rb,
lib/jets/stack/resource.rb,
lib/jets/stack/parameter.rb,
lib/jets/stack/definition.rb,
lib/jets/stack/output/dsl.rb,
lib/jets/stack/resource/dsl.rb,
lib/jets/stack/parameter/dsl.rb
Overview
Class that include Definition should implement:
template - method should use @definition to build a CloudFormation template section
Defined Under Namespace
Modules: Definition
Classes: Builder, Function, Main, Output, Parameter, Resource
Class Method Summary
collapse
#resources
#outputs
#add_common_parameters, #add_depends_on_parameters, #dependency_outputs, #parameters
Methods included from Main::Dsl
included
Class Method Details
.build? ⇒ Boolean
Build it to figure out if we need to build the stack for the SharedBuilder
32
33
34
35
|
# File 'lib/jets/stack.rb', line 32
def build?
empty = template == {"Parameters"=>{"IamRole"=>{"Type"=>"String"}, "S3Bucket"=>{"Type"=>"String"}}}
!empty
end
|
.eager_load_shared_resources! ⇒ Object
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/jets/stack.rb', line 76
def eager_load_shared_resources!
ActiveSupport::Dependencies.autoload_paths += ["#{Jets.root}app/shared/resources"]
Dir.glob("#{Jets.root}app/shared/resources/*.rb").select do |path|
next if !File.file?(path) or path =~ %r{/javascript/} or path =~ %r{/views/}
class_name = path
.sub(/\.rb$/,'') .sub(Jets.root.to_s,'') .sub(%r{app/shared/resources/},'') .classify
class_name.constantize end
end
|
.functions ⇒ Object
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/jets/stack.rb', line 37
def functions
stack = new
templates = stack.resources&.map(&:template)&.select do |t|
attributes = t.values.first
attributes['Type'] == 'AWS::Lambda::Function'
end
templates ||= []
templates.map { |t| Function.new(t) }
end
|
.has_resources? ⇒ Boolean
68
69
70
|
# File 'lib/jets/stack.rb', line 68
def has_resources?
!subclasses.empty?
end
|
.inherited(base) ⇒ Object
26
27
28
29
|
# File 'lib/jets/stack.rb', line 26
def inherited(base)
super
self.subclasses << base if base.name
end
|
.lookup(logical_id) ⇒ Object
90
91
92
|
# File 'lib/jets/stack.rb', line 90
def lookup(logical_id)
looker.output(logical_id)
end
|
.output_keys ⇒ Object
99
100
101
102
|
# File 'lib/jets/stack.rb', line 99
def output_keys
outputs = new.outputs || []
outputs.map(&:template).map {|o| o.keys.first}
end
|
.subclasses ⇒ Object
Track all command subclasses.
22
23
24
|
# File 'lib/jets/stack.rb', line 22
def subclasses
@subclasses ||= []
end
|
.template ⇒ Object
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/jets/stack.rb', line 48
def template
builder = Jets::Stack::Builder.new(new)
builder.template
end
|