module K::Configurable::ClassMethods

Public Instance Methods

configuration() click to toggle source
# File lib/k/configurable.rb, line 39
def configuration
  @configuration ||= anonymous_configuration_class.new(
    *__configurable_defaults
  )
end
configure() { |configuration| ... } click to toggle source
# File lib/k/configurable.rb, line 45
def configure
  yield(configuration)
end

Private Instance Methods

__configurable_attributes() click to toggle source
# File lib/k/configurable.rb, line 66
def __configurable_attributes
  @__configurable_attributes
end
__configurable_block() click to toggle source
# File lib/k/configurable.rb, line 74
def __configurable_block
  @__configurable_block
end
__configurable_defaults() click to toggle source
# File lib/k/configurable.rb, line 70
def __configurable_defaults
  @__configurable_defaults.values_at(*__configurable_attributes)
end
anonymous_configuration_class() click to toggle source
# File lib/k/configurable.rb, line 51
def anonymous_configuration_class
  block = __configurable_block
  Struct.new(*__configurable_attributes) do |klass|
    klass.class_exec(&block)

    def to_params
      Hash[
        members
        .map { |attr| [attr, public_send(attr)] }
        .reject { |_, value| value.nil? }
      ]
    end
  end
end
to_params() click to toggle source
# File lib/k/configurable.rb, line 56
def to_params
  Hash[
    members
    .map { |attr| [attr, public_send(attr)] }
    .reject { |_, value| value.nil? }
  ]
end