class LambdaWrap::Environment

Environment class to pass to the deploy and teardown

@!attribute [r] name

@return [String] The descriptive name of the environment.

@!attribute [r] description

@return [String] The description of the environment.

@!attribute [r] variables

@return [Hash] The Hash of environment variables to deploy with the environment.

@since 1.0

Attributes

description[R]
name[R]
variables[R]

Public Class Methods

new(name, variables = {}, description = 'Managed by LambdaWrap') click to toggle source

Constructor

@param name [String] Name of the environment. Corresponds to the Lambda Alias and API Gateway Stage.

Must be at least 3 characters, and no more than 20 characters.

@param variables [Hash] Environment variables to pass to the API Gateway stage. Must be a flat hash.

Each key must be Alphanumeric (underscores allowed) and no more than 64 characters. Values can have
most special characters, and no more than 512 characters.

@param description [String] Description of the environment for Stage & Alias descriptions. Must not

exceed 256 characters.
# File lib/lambda_wrap/environment.rb, line 28
def initialize(name, variables = {}, description = 'Managed by LambdaWrap')
  raise ArgumentError, 'name must be provided (String)!' unless name && name.is_a?(String)
  # Max Alias Name length is 20 characters.
  raise ArgumentError, "Invalid name format: #{name}" unless /^[a-zA-Z0-9\-\_]{3,20}$/ =~ name
  @name = name

  raise ArgumentError, 'Variables must be a Hash!' unless variables.is_a?(Hash)
  variables.each do |key, value|
    next if /^[0-9a-zA-Z\_]{1,64}$/ =~ key && /^[A-Za-z0-9\-.\_~:\/?#&=,]{1,512}$/ =~ value && value.is_a?(String)
    raise ArgumentError, "Invalid Format of variables hash: #{key} => #{value}"
  end

  variables[:environment] = name unless variables[:environment]
  @variables = variables

  raise ArgumentError, 'Description must be a String!' unless description.is_a?(String)
  raise ArgumentError, 'Description too long (Max 256)' unless description.length < 256
  @description = description
end

Public Instance Methods

to_s() click to toggle source
Calls superclass method
# File lib/lambda_wrap/environment.rb, line 48
def to_s
  return @name if @name && @name.is_a?(String)
  super
end