class Aruba::BasicConfiguration

Basic configuration for Aruba

@private

Basic Configuration

Attributes

hooks[W]
local_options[RW]

Public Class Methods

known_options() click to toggle source
# File lib/aruba/basic_configuration.rb, line 14
def known_options
  @known_options ||= {}
end
new() click to toggle source

Create configuration

# File lib/aruba/basic_configuration.rb, line 80
def initialize
  initialize_configuration
end
option_accessor(name, type:, default: nil) { |in_config_wrapper| ... } click to toggle source

Define an option reader and writer

@param [Symbol] name

The name of the reader

@option [Class, Module] type

The type contract for the option

@option [Object] default

The default value
# File lib/aruba/basic_configuration.rb, line 48
def option_accessor(name, type:, default: nil)
  raise ArgumentError, "Either use block or default value" if block_given? && default

  # Add writer
  add_option(name, block_given? ? yield(InConfigWrapper.new(known_options)) : default)

  Contract type => type
  define_method("#{name}=") { |v| find_option(name).value = v }

  # Add reader
  option_reader name, type: type
end
option_reader(name, type:, default: nil) { |in_config_wrapper| ... } click to toggle source

Define an option reader

@param [Symbol] name

The name of the reader

@option [Class, Module] type

The type contract for the option

@option [Object] default

The default value
# File lib/aruba/basic_configuration.rb, line 28
def option_reader(name, type:, default: nil)
  raise ArgumentError, "Either use block or default value" if block_given? && default

  add_option(name, block_given? ? yield(InConfigWrapper.new(known_options)) : default)

  Contract None => type
  define_method(name) { find_option(name).value }
end

Private Class Methods

add_option(name, value = nil) click to toggle source
# File lib/aruba/basic_configuration.rb, line 63
def add_option(name, value = nil)
  return if known_options.key?(name)

  known_options[name] = Option.new(name: name, value: value)

  self
end

Public Instance Methods

==(other) click to toggle source
# File lib/aruba/basic_configuration.rb, line 177
def ==(other)
  local_options.values.map(&:value) == other.local_options.values.map(&:value)
end
after(name, &block) click to toggle source

Define after-hook

@param [Symbol, String] name

The name of the hook

@yield

The code block which should be run. This is a configure time only option
# File lib/aruba/basic_configuration.rb, line 144
def after(name, &block)
  name = format("%s_%s", "after_", name.to_s).to_sym
  raise ArgumentError, "A block is required" unless block

  @hooks.append(name, block)

  self
end
before(name, &block) click to toggle source

Define before-hook

@param [Symbol, String] name

The name of the hook

@yield

The code block which should be run. This is a configure time only option
# File lib/aruba/basic_configuration.rb, line 112
def before(name, &block)
  name = format("%s_%s", "before_", name.to_s).to_sym
  raise ArgumentError, "A block is required" unless block

  @hooks.append(name, block)

  self
end
configure() { |self| ... } click to toggle source

@yield [Configuration]

Yields self
# File lib/aruba/basic_configuration.rb, line 87
def configure
  yield self if block_given?
end
make_copy() click to toggle source

Make deep dup copy of configuration

# File lib/aruba/basic_configuration.rb, line 97
def make_copy
  obj = dup
  obj.local_options = Marshal.load(Marshal.dump(local_options))
  obj.hooks         = @hooks

  obj
end
option?(name) click to toggle source

Check if <name> is option

@param [String, Symbol] name

The name of the option
# File lib/aruba/basic_configuration.rb, line 173
def option?(name)
  local_options.any? { |_, v| v.name == name.to_sym }
end
reset() click to toggle source

Reset configuration

# File lib/aruba/basic_configuration.rb, line 92
def reset
  initialize_configuration
end
run_after_hook(name, context, *args) click to toggle source

Run after-hook

@param [Symbol, String] name

The name of the hook

@param [Proc] context

The context a hook should run in

@param [Array] args

Arguments for the run of hook
# File lib/aruba/basic_configuration.rb, line 163
def run_after_hook(name, context, *args)
  name = format("%s_%s", "after_", name.to_s).to_sym

  @hooks.execute(name, context, *args)
end
run_before_hook(name, context, *args) click to toggle source

Run before-hook

@param [Symbol, String] name

The name of the hook

@param [Proc] context

The context a hook should run in

@param [Array] args

Arguments for the run of hook
# File lib/aruba/basic_configuration.rb, line 131
def run_before_hook(name, context, *args)
  name = format("%s_%s", "before_", name.to_s).to_sym

  @hooks.execute(name, context, *args)
end
set_if_option(name, *args) click to toggle source

Set if name is option

# File lib/aruba/basic_configuration.rb, line 182
def set_if_option(name, *args)
  public_send("#{name}=".to_sym, *args) if option? name
end

Private Instance Methods

find_option(name) click to toggle source
# File lib/aruba/basic_configuration.rb, line 193
def find_option(name)
  raise NotImplementedError, %(Unknown option "#{name}") unless option? name

  local_options[name]
end
initialize_configuration() click to toggle source
# File lib/aruba/basic_configuration.rb, line 188
def initialize_configuration
  @local_options = Marshal.load(Marshal.dump(self.class.known_options))
  @hooks         = Hooks.new
end