class AwsSsmEnv::NamingStrategyFactory
環境変数名を導出するためのNamingStrategyクラスを取得もしくは生成するファクトリクラス。
@author Ryohei Sonoda @since 0.1.0
Constants
- BASENAME_STRATEGY
- SNAKE_CASE_STRATEGY
Public Class Methods
create_naming_strategy(**args)
click to toggle source
環境変数名を導出するためのNamingStrategyクラスを取得もしくは生成する。
@param [Hash] args AwsSsmEnv#load
に渡された引数がそのまま渡される。 @option args [Symbol, AwsSsmEnv::NamingStrategy
, Object] naming
引数の詳細は AwsSsmEnv#load の説明を参照。
# File lib/aws-ssm-env/naming_strategies/factory.rb, line 18 def create_naming_strategy(**args) naming_strategy = args[:naming] if naming_strategy.nil? return default_strategy(args) end case naming_strategy when BASENAME_STRATEGY create_basename_strategy(args) when SNAKE_CASE_STRATEGY create_snakecase_strategy(args) else unknown_naming_strategy(naming_strategy) end end
Private Class Methods
create_basename_strategy(**args)
click to toggle source
# File lib/aws-ssm-env/naming_strategies/factory.rb, line 39 def create_basename_strategy(**args) require 'aws-ssm-env/naming_strategies/basename' AwsSsmEnv::BasenameNamingStrategy.new(args) end
create_snakecase_strategy(**args)
click to toggle source
# File lib/aws-ssm-env/naming_strategies/factory.rb, line 44 def create_snakecase_strategy(**args) require 'aws-ssm-env/naming_strategies/snakecase' AwsSsmEnv::SnakeCaseNamingStrategy.new(args) end
default_strategy(**args)
click to toggle source
# File lib/aws-ssm-env/naming_strategies/factory.rb, line 35 def default_strategy(**args) create_basename_strategy(args) end
naming_strategy_instance?(object)
click to toggle source
# File lib/aws-ssm-env/naming_strategies/factory.rb, line 57 def naming_strategy_instance?(object) if object.is_a?(AwsSsmEnv::NamingStrategy) true elsif object.respond_to?(:parse_name) true else false end end
unknown_naming_strategy(naming_strategy)
click to toggle source
# File lib/aws-ssm-env/naming_strategies/factory.rb, line 49 def unknown_naming_strategy(naming_strategy) unless naming_strategy_instance?(naming_strategy) raise ArgumentError, 'Possible values for :naming are either :basename, :snakecase, ' \ + '"AwsSsmEnv::NamingStrategy" implementation class, an object with "parse_name" method.' end naming_strategy end