module Redis::Objects::Values::ClassMethods

Class methods that appear in your class when you include Redis::Objects.

Public Instance Methods

mget(name, objects = []) click to toggle source
# File lib/redis/objects/values.rb, line 49
def mget(name, objects = [])
  return [] if objects.nil? || objects.empty?
  raise "Field name Error" if !redis_objects.keys.include?(name.to_sym)

  keys = objects.map{ |obj| obj.redis_field_key name.to_sym }

  self.redis.mget keys
end
value(name, options={}) click to toggle source

Define a new simple value. It will function like a regular instance method, so it can be used alongside ActiveRecord, DataMapper, etc.

# File lib/redis/objects/values.rb, line 16
def value(name, options={})
  redis_objects[name.to_sym] = options.merge(:type => :value)
  ivar_name = :"@#{name}"

  mod = Module.new do
    define_method(name) do
      instance_variable_get(ivar_name) or
        instance_variable_set(ivar_name,
          Redis::Value.new(
            redis_field_key(name), redis_field_redis(name), redis_options(name)
          )
        )
    end
    define_method("#{name}=") do |value|
      public_send(name).value = value
    end
  end

  if options[:global]
    extend mod

    # dispatch to class methods
    define_method(name) do
      self.class.public_send(name)
    end
    define_method("#{name}=") do |value|
      self.class.public_send("#{name}=", value)
    end
  else
    include mod
  end
end