class Seahorse::Client::Configuration

Configuration is used to define possible configuration options and then build read-only structures with user-supplied data.

## Adding Configuration Options

Add configuration options with optional default values. These are used when building configuration objects.

configuration = Configuration.new

configuration.add_option(:max_retries, 3)
configuration.add_option(:use_ssl, true)

cfg = configuration.build!
#=> #<struct max_retires=3 use_ssl=true>

## Building Configuration Objects

Calling {#build!} on a {Configuration} object causes it to return a read-only (frozen) struct. Options passed to {#build!} are merged on top of any default options.

configuration = Configuration.new
configuration.add_option(:color, 'red')

# default
cfg1 = configuration.build!
cfg1.color #=> 'red'

# supplied color
cfg2 = configuration.build!(color: 'blue')
cfg2.color #=> 'blue'

## Accepted Options

If you try to {#build!} a {Configuration} object with an unknown option, an ‘ArgumentError` is raised.

configuration = Configuration.new
configuration.add_option(:color)
configuration.add_option(:size)
configuration.add_option(:category)

configuration.build!(price: 100)
#=> raises an ArgumentError, :price was not added as an option