module ContainerConfig::Coercer

Contains classes and methods for type coercion

Public Class Methods

coerce_value(value, value_type = nil, options = {}) click to toggle source

Coerces a given value into a requested type

@param [Object] value value to coerce @param [Symbol] value_type requested type such as :boolean, :integer, :string, :symbol,

:ssl_verify_mode, :ssl_certificate, or :ssl_key

@param [Hash] options Options Hash @option options [Boolean] :coerce_nil where to coerce nil values (defaults to true)

@return [Object] coerced value

# File lib/container_config/coercer.rb, line 28
def self.coerce_value(value, value_type = nil, options = {})
  return value unless value_type

  return value if options[:coerce_nil] == false && value.nil?

  value_type = value_type.to_sym

  ContainerConfig.coercers.each do |coercer|
    return coercer.coerce(value) if coercer.type == value_type
  end

  ContainerConfig.logger.warn { "Could not find valid coercion type for #{value_type}" }
  value
end
default_coercers() click to toggle source

Array of default coercers

@return [Array<ContainerConfig::Coercer::Base>] default coercers

# File lib/container_config/coercer.rb, line 48
def self.default_coercers
  [
    ContainerConfig::Coercer::Boolean.new,
    ContainerConfig::Coercer::Float.new,
    ContainerConfig::Coercer::Integer.new,
    ContainerConfig::Coercer::SslCertificate.new,
    ContainerConfig::Coercer::SslKey.new,
    ContainerConfig::Coercer::SslVerifyMode.new,
    ContainerConfig::Coercer::String.new,
    ContainerConfig::Coercer::Symbol.new
  ]
end