Module: Chambermaid::Base

Extended by:
Base
Included in:
Chambermaid, Base
Defined in:
lib/chambermaid/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



6
7
8
9
# File 'lib/chambermaid/base.rb', line 6

def self.extended(base)
  # Make a copy of ENV before we mess it all up
  @@_original_env = ENV.to_h.dup.freeze
end

Instance Method Details

#add_namespace(path, overload: false) ⇒ Object

Add an AWS SSM parameter namespace to ENV

Examples:

Chambermaid.add_namespace("/my/param/namespace")

overload duplicate ENV vars

Chambermaid.add_namespace("/my/param/namespace", overload: true)

Parameters:

  • path (String)
  • overload (Boolean) (defaults to: false)

    true - replace any duplicate ENV keys with new params false - keep any existing duplicate ENV key values

Raises:

  • (ArgumentError)

    when ‘path` is not a string



57
58
59
60
61
62
# File 'lib/chambermaid/base.rb', line 57

def add_namespace(path, overload: false)
  raise ArgumentError.new("`path` must be a string") unless path.is_a?(String)
  raise ArgumentError.new("`overload` must be a boolean") unless [true, false].include?(overload)

  namespaces << Namespace.new(path: path, overload: overload)
end

#add_namespace!(path, overload: false) ⇒ Object

Immediately load an AWS SSM parameter namespace to ENV

Examples:

Chambermaid.add_namespace!("/my/param/namespace")

overload duplicate ENV vars

Chambermaid.add_namespace("/my/param/namespace", overload: true)

Parameters:

  • path (String)
  • overload (Boolean) (defaults to: false)

    true - replace any duplicate ENV keys with new params false - keep any existing duplicate ENV key values

Raises:

  • (ArgumentError)

    when ‘path` is not a string



79
80
81
82
83
84
# File 'lib/chambermaid/base.rb', line 79

def add_namespace!(path, overload: false)
  raise ArgumentError.new("`path` must be a string") unless path.is_a?(String)
  raise ArgumentError.new("`overload` must be a boolean") unless [true, false].include?(overload)

  namespaces << Namespace.load!(path: path, overload: overload)
end

#add_service(service, overload: false) ⇒ Object

Add all secrets from Chamber service to ENV

Examples:

Chambermaid.add_service("my-chamber-service")

overload duplicate ENV vars

Chambermaid.add_service("my-chamber-service", overload: true)

Parameters:

  • service (String)
  • overload (Boolean) (defaults to: false)

    true - replace any duplicate ENV keys with new params false - keep any existing duplicate ENV key values

See Also:

  • Chambermaid::Base.{Chambermaid{Chambermaid::Base{Chambermaid::Base.add_namespace}


100
101
102
103
# File 'lib/chambermaid/base.rb', line 100

def add_service(service, overload: false)
  service = "/#{service}" unless service[0] == "/"
  add_namespace(service)
end

#configurationObject



18
19
20
# File 'lib/chambermaid/base.rb', line 18

def configuration
  raise "Namespaces must be defined" unless @namespaces
end

#configure {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



13
14
15
# File 'lib/chambermaid/base.rb', line 13

def configure
  yield self
end

#load!Object

Load SSM into ENV



23
24
25
# File 'lib/chambermaid/base.rb', line 23

def load!
  @namespaces.each(&:load!)
end

#log_levelObject

!@attribute [r] log_level

@return [Symbol] (default = :info) current logger level


124
125
126
127
128
# File 'lib/chambermaid/base.rb', line 124

def log_level
  return logger.level unless @logger.nil?
  return @log_level unless @log_level.nil?
  return :info
end

#log_level=(val = :info) ⇒ Object

!@attribute [w] log_level

@return [Symbol] (default = :info) current logger level


132
133
134
135
136
# File 'lib/chambermaid/base.rb', line 132

def log_level=(val = :info)
  @logger.level = val unless @logger.nil?
  @log_level = val
  val
end

#loggerObject

!@attribute [r] logger

@return [Logger]


107
108
109
110
111
112
# File 'lib/chambermaid/base.rb', line 107

def logger
  @logger ||= Logger.new(STDOUT,
    level: log_level,
    progname: "Chambermaid"
  )
end

#logger=(val) ⇒ Object

!@attribute [w] logger

@return [Logger]


116
117
118
119
120
# File 'lib/chambermaid/base.rb', line 116

def logger=(val)
  @logger = val
  @logger.progname = "Chambermaid"
  logger
end

#reload!Object



28
29
30
# File 'lib/chambermaid/base.rb', line 28

def reload!
  @namespaces.each(&:reload!)
end

#restore!Object Also known as: reset!

Restore ENV to its original state



37
38
39
# File 'lib/chambermaid/base.rb', line 37

def restore!
  ENV.replace(@@_original_env)
end

#unload!Object



32
33
34
# File 'lib/chambermaid/base.rb', line 32

def unload!
  @namespaces.each(&:unload!)
end