class Juvet::Adapters::RedisAdapter
Attributes
collection[R]
redis[R]
Public Class Methods
new(collection, options={})
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 9 def initialize(collection, options={}) @collection = collection @redis = Redis.new options end
Public Instance Methods
all()
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 14 def all redis.keys("#{collection_prefix}:*").map do |key| find_by_key(key) end end
create(entity)
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 20 def create(entity) update_attributes entity end
destroy(id)
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 24 def destroy(id) redis.del collection_key(id) end
find(id)
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 28 def find(id) find_by_key collection_key(id) end
persist(entity)
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 32 def persist(entity) find(entity.id).nil? ? create(entity) : update_attributes(entity) end
update(entity)
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 36 def update(entity) raise EntityNotFoundError if find(entity.id).nil? update_attributes entity end
Private Instance Methods
collection_key(id)
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 43 def collection_key(id) "#{collection_prefix}:#{id}" end
collection_prefix()
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 47 def collection_prefix Juvet::String.new(collection.name).underscore end
find_by_key(key)
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 51 def find_by_key(key) attributes = redis.get key return nil if attributes.nil? collection.entity.new ({ id: id_from_key(key) }).merge(JSON.load(attributes)) end
id_from_key(key)
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 57 def id_from_key(key) key.gsub("#{collection_prefix}:", "") end
key(entity)
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 61 def key(entity) collection_key entity.id end
update_attributes(entity)
click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 65 def update_attributes(entity) redis.set key(entity), entity.attributes.to_json entity end