Class: Jets::Resource::ChildStack::AppClass
- Defined in:
- lib/jets/resource/child_stack/app_class.rb
Instance Method Summary collapse
-
#app_logical_id ⇒ Object
Dont name logical id because that is in Jets::Resource map the path to a camelized logical_id.
- #controller? ⇒ Boolean
- #controller_params ⇒ Object
- #current_app_class ⇒ Object
- #definition ⇒ Object
-
#initialize(path, s3_bucket) ⇒ AppClass
constructor
A new instance of AppClass.
- #outputs ⇒ Object
- #parameters ⇒ Object
- #scoped_routes ⇒ Object
- #template_url ⇒ Object
Methods inherited from Base
Constructor Details
#initialize(path, s3_bucket) ⇒ AppClass
Returns a new instance of AppClass.
3 4 5 6 |
# File 'lib/jets/resource/child_stack/app_class.rb', line 3 def initialize(path, s3_bucket) @path = path @s3_bucket = s3_bucket end |
Instance Method Details
#app_logical_id ⇒ Object
Dont name logical id because that is in Jets::Resource map the path to a camelized logical_id. Example:
/tmp/jets/demo/templates/demo-dev-2-posts_controller.yml to
PostsController
71 72 73 74 75 |
# File 'lib/jets/resource/child_stack/app_class.rb', line 71 def app_logical_id regexp = Regexp.new(".*#{Jets.config.project_namespace}-") controller_name = @path.sub(regexp, '').sub('.yml', '') controller_name.underscore.camelize end |
#controller? ⇒ Boolean
43 44 45 |
# File 'lib/jets/resource/child_stack/app_class.rb', line 43 def controller? @path.include?('_controller.yml') end |
#controller_params ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/jets/resource/child_stack/app_class.rb', line 30 def controller_params return {} if Jets::Router.routes.empty? params = { RestApi: "!GetAtt ApiGateway.Outputs.RestApi", } scoped_routes.each do |route| resource = Jets::Resource::ApiGateway::Resource.new(route.path) params[resource.logical_id] = "!GetAtt ApiGateway.Outputs.#{resource.logical_id}" end params end |
#current_app_class ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/jets/resource/child_stack/app_class.rb', line 53 def current_app_class templates_prefix = "#{Jets::Naming.template_path_prefix}-" @path.sub(templates_prefix, '') .sub(/\.yml$/,'') .gsub('-','/') .classify end |
#definition ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/jets/resource/child_stack/app_class.rb', line 8 def definition logical_id = app_logical_id { logical_id => { type: "AWS::CloudFormation::Stack", properties: { template_url: template_url, parameters: parameters, } } } end |
#outputs ⇒ Object
61 62 63 64 65 |
# File 'lib/jets/resource/child_stack/app_class.rb', line 61 def outputs { logical_id => "!Ref #{logical_id}", } end |
#parameters ⇒ Object
21 22 23 24 25 26 27 28 |
# File 'lib/jets/resource/child_stack/app_class.rb', line 21 def parameters common = { IamRole: "!GetAtt IamRole.Arn", S3Bucket: "!Ref S3Bucket", } common.merge!(controller_params) if controller? common end |
#scoped_routes ⇒ Object
47 48 49 50 51 |
# File 'lib/jets/resource/child_stack/app_class.rb', line 47 def scoped_routes @routes ||= Jets::Router.routes.select do |route| route.controller_name == current_app_class end end |
#template_url ⇒ Object
77 78 79 |
# File 'lib/jets/resource/child_stack/app_class.rb', line 77 def template_url "https://s3.amazonaws.com/#{@s3_bucket}/jets/cfn-templates/#{File.basename(@path)}" end |