Class: AwsSsmEnv::SnakeCaseNamingStrategy

Inherits:
NamingStrategy show all
Defined in:
lib/aws-ssm-env/naming_strategies/snakecase.rb

Overview

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

Author:

  • Ryohei Sonoda

Since:

  • 0.1.0

Instance Method Summary collapse

Constructor Details

#initialize(**args) ⇒ SnakeCaseNamingStrategy

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

Parameters:

  • args (Hash)

    AwsSsmEnv#load の呼び出し時に渡された引数。

Options Hash (**args):

  • :removed_prefix (String)

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

  • :delimiter (String, Regexp)

    アンダースコアに変換する区切り文字。デフォルトはスラッシュ(‘/’)。 TODO: AwsSsmEnv#loadとREADMEに反映

Since:

  • 0.1.0



19
20
21
22
23
24
25
26
# File 'lib/aws-ssm-env/naming_strategies/snakecase.rb', line 19

def initialize(**args)
  super
  @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}")
end

Instance Method Details

#parse_name(parameter) ⇒ String

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

Returns:

  • (String)

    環境変数名

See Also:

Since:

  • 0.1.0



32
33
34
35
# File 'lib/aws-ssm-env/naming_strategies/snakecase.rb', line 32

def parse_name(parameter)
  name_without_prefix = parameter.name.gsub(@removed_prefix, '')
  name_without_prefix.gsub(@delimiter, '_').upcase
end