class Motion::Configuration

Constants

WARDEN_ENV

TODO: Is this always the correct key?

Attributes

options[RW]

Public Class Methods

default() click to toggle source
# File lib/motion/configuration.rb, line 10
def default
  @default ||= new
end
new() { |self| ... } click to toggle source
# File lib/motion/configuration.rb, line 44
def initialize
  yield self if block_given?

  # Ensure a value is selected for all options
  self.class.options.each(&method(:public_send))

  # Prevent further changes
  @finalized = true
end

Private Class Methods

define_option_reader(option, &default) click to toggle source
# File lib/motion/configuration.rb, line 25
def define_option_reader(option, &default)
  define_method(option) do
    if instance_variable_defined?(:"@#{option}")
      instance_variable_get(:"@#{option}")
    else
      instance_variable_set(:"@#{option}", instance_exec(&default))
    end
  end
end
define_option_writer(option) click to toggle source
# File lib/motion/configuration.rb, line 35
def define_option_writer(option)
  define_method(:"#{option}=") do |value|
    raise AlreadyConfiguredError if @finalized

    instance_variable_set(:"@#{option}", value)
  end
end
option(option, &default) click to toggle source
# File lib/motion/configuration.rb, line 18
def option(option, &default)
  define_option_reader(option, &default)
  define_option_writer(option)

  self.options = [*options, option].freeze
end