module Calibrate::Configurable

Handles setting options on objects it's mixed into

Settings can have default values or be required (as opposed to defaulting to nil). Settings and their defaults are inherited (and can be overridden) by subclasses.

Calibrate also includes a yard-extension that will document settings of a Configurable

@example (see ClassMethods)

Constants

RequiredField

Public Class Methods

unset_defaults_guard() click to toggle source
# File lib/calibrate/configurable/instance-methods.rb, line 44
def self.unset_defaults_guard
end

Public Instance Methods

check_required() click to toggle source

Checks that all required fields have be set, otherwise raises an error @raise RuntimeError if any required fields are unset

# File lib/calibrate/configurable/instance-methods.rb, line 53
def check_required
  unset_defaults_guard
  missing = self.class.missing_required_fields_on(self)
  unless missing.empty?
    raise RequiredFieldUnset, "Required field#{missing.length > 1 ? "s" : ""} #{missing.map{|field| field.to_s.inspect}.join(", ")} unset on #{self.inspect}"
  end
  self
end
copy_settings() click to toggle source
# File lib/calibrate/configurable/instance-methods.rb, line 12
def copy_settings
  SettingsCopier.new(self)
end
copy_settings_to(other) click to toggle source
# File lib/calibrate/configurable/instance-methods.rb, line 16
def copy_settings_to(other)
  copy_settings.to(other)
  self
end
fail_if_unset(name)
Alias for: fail_unless_set
fail_unless_set(name) click to toggle source

Requires that a named field be set

# File lib/calibrate/configurable/instance-methods.rb, line 77
def fail_unless_set(name)
  if field_unset?(name)
    raise "Assertion failed: Field #{name} unset"
  end
  true
end
Also aliased as: fail_if_unset
field_unset?(name) click to toggle source
# File lib/calibrate/configurable/instance-methods.rb, line 72
def field_unset?(name)
  self.class.field_metadata(name).unset_on?(self)
end
from_hash(hash) click to toggle source
# File lib/calibrate/configurable/instance-methods.rb, line 33
def from_hash(hash)
  self.class.from_hash(self, hash)
end
initialize_copy(original) click to toggle source
# File lib/calibrate/configurable/instance-methods.rb, line 8
def initialize_copy(original)
  original.copy_settings_to(self)
end
proxy_settings() click to toggle source
# File lib/calibrate/configurable/instance-methods.rb, line 21
def proxy_settings
  SettingsProxier.new(self)
end
proxy_settings_to(other) click to toggle source
# File lib/calibrate/configurable/instance-methods.rb, line 25
def proxy_settings_to(other)
  proxy_settings.to(other)
end
proxy_value() click to toggle source
# File lib/calibrate/configurable/instance-methods.rb, line 62
def proxy_value
  ProxyDecorator.new(self)
end
setup_defaults() click to toggle source

Call during initialize to set default values on settings - if you're using Configurable outside of Calibrate, be sure this gets called.

# File lib/calibrate/configurable/instance-methods.rb, line 43
def setup_defaults
  def self.unset_defaults_guard
  end

  self.class.set_defaults_on(self)
  self
end
to_hash() click to toggle source
# File lib/calibrate/configurable/instance-methods.rb, line 29
def to_hash
  self.class.to_hash(self)
end
unset?(value) click to toggle source

XXX deprecate

# File lib/calibrate/configurable/instance-methods.rb, line 67
def unset?(value)
  warn "#unset? is deprecated - use field_unset? instead"
  value.nil?
end
unset_defaults_guard() click to toggle source
# File lib/calibrate/configurable/instance-methods.rb, line 37
def unset_defaults_guard
  raise "Tried to check required settings before running setup_defaults"
end