def install_class_redis_object name, klass, opts
raise ArgumentError, "Name is blank" if name.to_s.empty?
name = name.to_s.to_sym
opts = opts.nil? ? {} : opts.clone
opts[:parent] = self unless opts.has_key?(:parent)
class_redis_objects_order << name
class_redis_objects[name] = OpenStruct.new
class_redis_objects[name].name = name
class_redis_objects[name].klass = klass
class_redis_objects[name].opts = opts
metaclass.send :attr_reader, name
metaclass.send :define_method, "#{name}=" do |v|
send(name).replace v
end
metaclass.send :define_method, "#{name}?" do
!send(name).empty?
end
redis_object = klass.new name, opts
redis_object.freeze
self.instance_variable_set("@#{name}", redis_object)
class_redis_objects[name]
end