class AwsSsmEnv::SnakeCaseNamingStrategy

パラメータ名の階層表現をスネークケースに変換した値を環境変数名とする。 例えば、`removed_prefix`が`/path`で`/path/to/environment_name`というパラメータ名なら ENVにパラメータ値がインジェクションされる。

@author Ryohei Sonoda @since 0.1.0

Public Class Methods

new(**args) click to toggle source

ここの引数は AwsSsmEnv#load の呼び出し時に渡された引数がそのまま渡される。

@param [Hash] args AwsSsmEnv#load の呼び出し時に渡された引数。 @option args [String] :removed_prefix

パラメータ名から除去するプレフィクス。この文字列は導出される環境変数名に含まない。
:removed_prefixが指定されておらず、:begins_with または :path が指定されていた場合はそれを利用する。 TODO: AwsSsmEnv#loadとREADMEに反映

@option args [String, Regexp] :delimiter

アンダースコアに変換する区切り文字。デフォルトはスラッシュ('/')。 TODO: AwsSsmEnv#loadとREADMEに反映
# File lib/aws-ssm-env/naming_strategies/snakecase.rb, line 19
def initialize(**args)
  @logger = args[:logger]
  @delimiter = detect_delimiter(args)
  removed_prefix = detect_prefix(args).sub(%r{/\z}, '')
  @removed_prefix = /\A#{Regexp.escape(removed_prefix)}/
  @logger.debug("#{self.class.name} removed_prefix is #{@removed_prefix}") if @logger
end

Public Instance Methods

parse_name(parameter) click to toggle source

@see AwsSsmEnv::NamingStrategy#parse_name

パラメータ名からプレフィクスを除去してパス区切りをアンダースコアに変換後、大文字にして返す。 @return [String] 環境変数名

# File lib/aws-ssm-env/naming_strategies/snakecase.rb, line 31
def parse_name(parameter)
  name_without_prefix = parameter.name.gsub(@removed_prefix, '')
  name_without_prefix.gsub(@delimiter, '_').upcase
end

Private Instance Methods

detect_delimiter(**args) click to toggle source
# File lib/aws-ssm-env/naming_strategies/snakecase.rb, line 38
def detect_delimiter(**args)
  if args[:delimiter].nil?
    '/'
  else
    args[:delimiter]
  end
end
detect_prefix(**args) click to toggle source
# File lib/aws-ssm-env/naming_strategies/snakecase.rb, line 46
def detect_prefix(**args)
  if args[:removed_prefix]
    args[:removed_prefix]
  elsif args[:begins_with]
    args[:begins_with]
  elsif args[:path]
    args[:path]
  else
    ''
  end
end