class AwsSsmEnv::Loader

このgemのエントリポイントとなるクラス。メイン処理を行う。 AWS EC2 Parameters Storeからパラメータを取得してENVに書き込む。

@author Ryohei Sonoda @since 0.1.0

Public Class Methods

load(**args) click to toggle source

メイン処理。引数の詳細は AwsSsmEnv#load を参照。

# File lib/aws-ssm-env/loader.rb, line 12
def self.load(**args)
  new(args).load
end
new(**args) click to toggle source
# File lib/aws-ssm-env/loader.rb, line 16
def initialize(**args)
  parse_options(args)
  if @logger
    @logger.debug("#{self.class.name} overwrite: #{@overwrite}")
    @logger.debug("#{self.class.name} fetcher: #{@fetcher}")
    @logger.debug("#{self.class.name} naming_strategy: #{@naming_strategy}")
  end
end

Public Instance Methods

load() click to toggle source
# File lib/aws-ssm-env/loader.rb, line 25
def load
  @fetcher.each do |parameter|
    var_name = @naming_strategy.parse_name(parameter)
    @logger.debug("#{self.class.name} #{parameter.name} parameter value into ENV['#{var_name}']") if @logger
    send(@applier, var_name, parameter.value)
  end
end

Private Instance Methods

apply(name, value) click to toggle source
# File lib/aws-ssm-env/loader.rb, line 56
def apply(name, value)
  if ENV[name]
    return
  end
  apply!(name, value)
end
apply!(name, value) click to toggle source
# File lib/aws-ssm-env/loader.rb, line 63
def apply!(name, value)
  ENV[name] = value
end
overwrite?(overwrite: nil, **) click to toggle source

overwriteフラグが指定されているかどうかを返す。

# File lib/aws-ssm-env/loader.rb, line 48
def overwrite?(overwrite: nil, **)
  if overwrite.nil?
    false
  else
    overwrite.to_s.downcase == 'true'
  end
end
parse_options(**options) click to toggle source
# File lib/aws-ssm-env/loader.rb, line 35
def parse_options(**options)
  @logger = options[:logger]
  @fetcher = AwsSsmEnv::FetcherFactory.create_fetcher(options)
  @naming_strategy = AwsSsmEnv::NamingStrategyFactory.create_naming_strategy(options)
  @overwrite = overwrite?(options)
  if @overwrite
    @applier = :apply!
  else
    @applier = :apply
  end
end