class Restforce::Configuration::Option

Attributes

configuration[R]
default[R]
default_provided?[R]
name[R]
options[R]

Public Class Methods

define(*args) click to toggle source
# File lib/restforce/config.rb, line 46
def self.define(*args)
  new(*args).define
end
new(configuration, name, options = {}) click to toggle source
# File lib/restforce/config.rb, line 50
def initialize(configuration, name, options = {})
  @configuration = configuration
  @name = name
  @options = options
  @default = options.fetch(:default, nil)
end

Public Instance Methods

define() click to toggle source
# File lib/restforce/config.rb, line 57
def define
  write_attribute
  define_method if default_provided?
  self
end

Private Instance Methods

define_method() click to toggle source
# File lib/restforce/config.rb, line 72
def define_method
  our_default = default
  our_name    = name
  configuration.send :define_method, our_name do
    instance_variable_get(:"@#{our_name}") ||
      instance_variable_set(
        :"@#{our_name}",
        our_default.respond_to?(:call) ? our_default.call : our_default
      )
  end
end
write_attribute() click to toggle source
# File lib/restforce/config.rb, line 68
def write_attribute
  configuration.send :attr_accessor, name
end