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/depends.rb,
lib/jets/stack/function.rb,
lib/jets/stack/main/dsl.rb,
lib/jets/stack/resource.rb,
lib/jets/stack/s3_event.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, Depends, Function, Main, Output, Parameter, Resource, S3Event
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
46
47
48
49
|
# File 'lib/jets/stack.rb', line 46
def build?
empty = template == {"Parameters"=>{"IamRole"=>{"Type"=>"String"}, "S3Bucket"=>{"Type"=>"String"}}}
!empty
end
|
.eager_load_shared_resources! ⇒ Object
90
91
92
93
94
95
96
97
98
99
100
101
|
# File 'lib/jets/stack.rb', line 90
def eager_load_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}/",'') .sub(%r{app/shared/resources/},'') .classify
class_name.constantize end
end
|
.functions ⇒ Object
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/jets/stack.rb', line 51
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
82
83
84
|
# File 'lib/jets/stack.rb', line 82
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
103
104
105
|
# File 'lib/jets/stack.rb', line 103
def lookup(logical_id)
looker.output(logical_id)
end
|
.new_class(class_name, &block) ⇒ Object
klass = Jets::Stack.new_class(“Bucket3”)
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/jets/stack.rb', line 32
def new_class(class_name, &block)
klass = Class.new(Jets::Stack) klass = Object.const_set(class_name, klass) Jets::Stack.subclasses << klass
klass.class_eval(&block)
klass end
|
.output_keys ⇒ Object
112
113
114
115
|
# File 'lib/jets/stack.rb', line 112
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
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/jets/stack.rb', line 62
def template
builder = Jets::Stack::Builder.new(new)
builder.template
end
|