class Jets::Resource::ChildStack::AppClass
def self.common_parameters
def self.common_parameters parameters = { IamRole: "!GetAtt IamRole.Arn", S3Bucket: "!Ref S3Bucket", } parameters[:GemLayer] = "!Ref GemLayer" unless Jets.poly_only? parameters end
def app_logical_id
/tmp/jets/demo/templates/demo-dev-2-posts_controller.yml to
map the path to a camelized logical_id. Example:
def app_logical_id regexp = Regexp.new(".*#{Jets.config.project_namespace}-app-") controller_name = @path.sub(regexp, '').sub('.yml', '') controller_name.underscore.camelize end
def controller?
def controller? @path.include?('_controller.yml') end
def controller_params
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
def current_app_class
def current_app_class templates_prefix = "#{Jets::Naming.template_path_prefix}-app-" @path.sub(templates_prefix, '') .sub(/\.yml$/,'') .gsub('-','/') .camelize end
def definition
def definition logical_id = app_logical_id defintion = { logical_id => { type: "AWS::CloudFormation::Stack", properties: { template_url: template_url, parameters: parameters, } } } defintion[logical_id][:depends_on] = depends_on if depends_on defintion end
def depends_on
def depends_on klass = current_app_class.constantize return unless klass.depends_on depends = Jets::Stack::Depends.new(klass.depends_on) depends.stack_list end
def depends_on_params
def depends_on_params klass = current_app_class.constantize return unless klass.depends_on depends = Jets::Stack::Depends.new(klass.depends_on) depends.params end
def initialize(s3_bucket, options={})
def initialize(s3_bucket, options={}) super @path = options[:path] end
def parameters
def parameters common = self.class.common_parameters common.merge!(controller_params) if controller? common.merge!(depends_on_params) if depends_on common end
def scoped_routes
def scoped_routes @routes ||= Jets::Router.routes.select do |route| route.controller_name == current_app_class end end
def template_filename
def template_filename @path end