Module: RedisRecord
- Defined in:
- lib/redis_record.rb
Constant Summary collapse
- @@redis =
nil
Instance Method Summary collapse
- #all ⇒ Object
- #find(id) ⇒ Object
- #redis ⇒ Object
- #redis_key(*args) ⇒ Object
-
#use_redis(*args) ⇒ Object
call this to mixin member-methods TODO: redis parameters (host, port, etc.).
Instance Method Details
#all ⇒ Object
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/redis_record.rb', line 50 def all keys = redis.keys(redis_key("*")) objects = [] keys.each do |key| if data = redis.get(key) objects << parse(data) end end objects end |
#find(id) ⇒ Object
45 46 47 48 |
# File 'lib/redis_record.rb', line 45 def find(id) data = redis.get(redis_key(id)) parse(data) if data end |
#redis ⇒ Object
34 35 36 |
# File 'lib/redis_record.rb', line 34 def redis @@redis end |
#redis_key(*args) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/redis_record.rb', line 38 def redis_key(*args) # redis_key -> user # redis_key(1) -> user_1 # redis_key(1, "attr") -> user_1_attr [ @_prefix ||= self.name.downcase, *args ].join('_') end |
#use_redis(*args) ⇒ Object
call this to mixin member-methods TODO: redis parameters (host, port, etc.)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/redis_record.rb', line 8 def use_redis(*args) class_eval do attr_accessor :id def save unless persisted? # Note: redis automatically generates an key_value-pair with type int self.id = self.class.redis.incr('#' + self.class.redis_key) end "OK" == self.class.redis.set(self.class.redis_key(id), self.dump) end def persisted? !id.nil? end protected def dump Marshal.dump(self) end end @@redis = Redis.new(*args) end |