class Xpose::Configuration

Constants

DEFAULT_VALUES

Attributes

config[RW]

Public Class Methods

new(**options) click to toggle source
# File lib/xpose/configuration.rb, line 13
def initialize(**options)
  @options = options
  permit_options! unless options.fetch(:permissive, false)
  build_config
  build_internal_defaults
end

Public Instance Methods

method_missing(method, *args, &block) click to toggle source
# File lib/xpose/configuration.rb, line 20
def method_missing(method, *args, &block)
  config.send(method, *args, &block)
end
model() click to toggle source
# File lib/xpose/configuration.rb, line 24
def model
  config.singularized_name.capitalize.constantize
end

Private Instance Methods

build_config() click to toggle source
# File lib/xpose/configuration.rb, line 38
def build_config
  @config = OpenStruct.new(DEFAULT_VALUES.merge(@options)).tap do |c|
    raise MissingOptionsError.new(:name) if c.name.blank?

    c.name = c.name.to_sym
    c.ivar_name = :"@#{c.name}"
    c.singularized_name = c.name.to_s.singularize
    c.pluralized_name = c.singularized_name.pluralize
  end
end
permit_options!() click to toggle source
# File lib/xpose/configuration.rb, line 32
def permit_options!
  (@options.keys - DEFAULT_VALUES.keys).tap do |unknown_keys|
    raise UnknownOptionsError.new(unknown_keys) unless unknown_keys.empty?
  end
end