redis_backed_model 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # RedisBackedModel
2
2
 
3
- TODO: Write a gem description
3
+ Provides useful functions to objects that are backed by a Redis store instead of ActiveRecord.
4
4
 
5
5
  ## Installation
6
6
 
@@ -18,7 +18,34 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ Subclass your models from RedisBackedModel::RedisBackedModel
22
+
23
+ ```ruby
24
+ class Person < RedisBackedModel::RedisBackedModel
25
+ ...
26
+ end
27
+ ```
28
+
29
+ When initializing a person, pass in a hash of attributes
30
+
31
+ ```ruby
32
+ p = Person.new({:id => 2, :first_name => "Bill", :last_name => "Smith"})
33
+ ```
34
+
35
+ RBM will create instance variables as needed
36
+
37
+ ```ruby
38
+ p.instance_variables => [:@id, :@first_name, :@last_name]
39
+ ```
40
+
41
+ You can use RBM to get Redis commands that will save your object as a hash
42
+
43
+ ```ruby
44
+ p.to_redis => ["sadd|person_ids|2", "hset|person:2|id|2", "hset|person:2|first_name|Bill", "hset|person:2|last_name|Smith"]
45
+ ```
46
+
47
+ You can parse these and pass them to Redis yourself or use the gem 'redis_pipeline': https://github.com/SeniorServiceAmerica/redis_pipeline
48
+
22
49
 
23
50
  ## Contributing
24
51
 
@@ -1,6 +1,6 @@
1
1
  module RedisBackedModel
2
2
  class RedisBackedModel
3
-
3
+
4
4
  def initialize(attributes={})
5
5
  if attributes.class == Hash
6
6
  attributes.each do |key, value|
@@ -17,12 +17,13 @@ module RedisBackedModel
17
17
  instance_variables.each do | var |
18
18
  build_command_for_variable(var, redis_commands)
19
19
  end
20
+
20
21
  redis_commands
21
22
  end
22
23
 
23
24
  private
24
25
 
25
- attr_reader :id, :scores
26
+ attr_reader :id
26
27
 
27
28
  def add_to_instance_variables(key, value)
28
29
  if key.match(/score_\[\w+\|\w+\]/)
@@ -33,8 +34,7 @@ module RedisBackedModel
33
34
  end
34
35
 
35
36
  def add_to_scores(key, value)
36
- @scores ||= []
37
- @scores << SortedSet.new(self.class, id, Hash[key,value])
37
+ scores << SortedSet.new(self.class, id, Hash[key,value])
38
38
  end
39
39
 
40
40
  def build_command_for_variable(variable, collection)
@@ -59,7 +59,10 @@ module RedisBackedModel
59
59
  def model_name_for_redis
60
60
  class_as_string = self.class.to_s.demodulize.underscore
61
61
  end
62
-
62
+
63
+ def scores
64
+ @scores ||= []
65
+ end
63
66
  end
64
67
 
65
68
  end
@@ -8,6 +8,7 @@ module RedisBackedModel
8
8
  @model = model
9
9
  @model_id = model_id
10
10
  @definition = definition
11
+ self
11
12
  end
12
13
 
13
14
  def to_redis
@@ -1,3 +1,3 @@
1
1
  module RedisBackedModel
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_backed_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-08-31 00:00:00.000000000Z
13
+ date: 2012-09-04 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
17
- requirement: &2156372240 !ruby/object:Gem::Requirement
17
+ requirement: &2164484940 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *2156372240
25
+ version_requirements: *2164484940
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: redis
28
- requirement: &2156371820 !ruby/object:Gem::Requirement
28
+ requirement: &2164484520 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *2156371820
36
+ version_requirements: *2164484520
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: activesupport
39
- requirement: &2156371400 !ruby/object:Gem::Requirement
39
+ requirement: &2164484100 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2156371400
47
+ version_requirements: *2164484100
48
48
  description: Provides methods to models that are backed by a redis instance.
49
49
  email:
50
50
  - iwhitney@ssa-i.org