Methods

DaemonKit::Configurable::ClassMethods

Public Instance Methods

configurable( name, *args ) click to toggle source

Create a configurable value on any instance, which can contain a default value, and/or be locked.

Create a standard getter/setter without a default value

configurable :foo

Create a getter/setter with a default value

configurable :foo, true

The final argument can be an options hash, which currently respects only one key: locked (false by default). Locking a configurable means the value can only be set once by the setter method.

configurable :foo, :locked => true

As long as the getter method (foo) returns nil, the standard setter method will work. As soon as the getter returns a non-nil value the setter won't set a new value. To set a new value you'll have to explicitly use the set instance method.

# File lib/daemon_kit/core_ext/configurable.rb, line 44
def configurable( name, *args )
  opts = args.last.is_a?( Hash ) ? args.pop : {}
  opts = { :locked => false }.merge( opts )

  default = args.size <= 1 ? args.pop : args

  name = name.to_sym

  self.configurables[ name ] = opts
  self.configurable_defaults[ name ] = default

  class_eval(           def #{name}                                    # def foo            if _configurables[:#{name}].nil?             #   if _configurables[:foo].nil?              self.class.configurable_defaults[:#{name}] #     self.class.configurable_defaults[:foo]            else                                         #   else              _configurables[:#{name}]                   #     _configurables[:foo]            end                                          #   end          end                                            #          def #{name}=( value )                              # def foo=( value )            if #{name}.nil? ||                               #   if foo.nil? ||                !self.class.configurables[:#{name}][:locked] #       !self.class.configurables[:foo][:locked]                                                             #              _configurables[:#{name}] = value               #     _configurables[:foo] = value            end                                              #   end          end                                                # end, __FILE__, __LINE__ )
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.