redis-objects-model 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ script: bundle exec rake spec
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # redis-objects-model
2
2
 
3
+ [![Build Status](https://travis-ci.org/kepstin/redis-objects-model.png)](https://travis-ci.org/kepstin/redis-objects-model)
4
+
3
5
  The simplest possible Model to use with redis-objects.
4
6
 
5
7
  The minimum requirement for a class to be usable as a model with
@@ -19,7 +19,11 @@ class Redis
19
19
  class Model
20
20
  include Redis::Objects
21
21
 
22
- counter :last_id, :global => true
22
+ ##
23
+ # The name of the redis counter which will be used to allocate keys.
24
+ def redis_objects_model_next_id
25
+ "#{self.class.redis_prefix}:next_id"
26
+ end
23
27
 
24
28
  ##
25
29
  # Create an instance of the model.
@@ -41,7 +45,7 @@ class Redis
41
45
  # In other words, accessing the id attribute is basically equivalent to
42
46
  # persisting the object.
43
47
  def id
44
- @id || @id = last_id.increment
48
+ @id || @id = self.redis.incr(self.redis_objects_model_next_id)
45
49
  end
46
50
 
47
51
  #########################################################################
@@ -1,7 +1,7 @@
1
1
  class Redis
2
2
  module Objects
3
3
  class Model
4
- VERSION = "1.0.0"
4
+ VERSION = "1.0.1"
5
5
  end
6
6
  end
7
7
  end
@@ -1,43 +1,61 @@
1
1
  require 'fakeredis'
2
2
  require 'redis-objects-model'
3
3
 
4
+ class MyModel < Redis::Objects::Model
5
+ end
6
+
4
7
  describe 'redis-objects-model' do
8
+ it 'should derive key from subclass name' do
9
+ model = MyModel.new
10
+ model.redis_objects_model_next_id.should == 'my_model:next_id'
11
+ end
12
+
5
13
  it 'should not be persisted by default' do
6
- model = Redis::Objects::Model.new
14
+ model = MyModel.new
7
15
  model.should be_new_record
8
16
  model.should_not be_persisted
9
17
  end
10
18
 
11
19
  it 'should be persisted after assigning an id' do
12
- model = Redis::Objects::Model.new
20
+ model = MyModel.new
13
21
  model.id.should > 0
14
22
  model.should_not be_new_record
15
23
  model.should be_persisted
16
24
  end
17
25
 
18
26
  it 'should return the same id with multiple calls' do
19
- model = Redis::Objects::Model.new
27
+ model = MyModel.new
20
28
  id_1 = model.id
21
29
  id_2 = model.id
22
30
  id_1.should == id_2
23
31
  end
24
32
 
25
33
  it 'should not create multiple models with the same id' do
26
- model_1 = Redis::Objects::Model.new
27
- model_2 = Redis::Objects::Model.new
34
+ model_1 = MyModel.new
35
+ model_2 = MyModel.new
28
36
  model_1.id.should_not == model_2.id
29
37
  end
30
38
 
31
39
  it 'should allow being created with an assigned id' do
32
40
  id = Random.rand(1..100000)
33
- model = Redis::Objects::Model.new id
41
+ model = MyModel.new id
34
42
  model.should be_persisted
35
43
  model.id.should == id
36
44
  end
37
45
 
38
46
  it 'should be persisted immediately when called with create' do
39
- model = Redis::Objects::Model.create
47
+ model = MyModel.create
40
48
  model.should be_persisted
41
49
  model.id.should > 0
42
50
  end
51
+
52
+ it 'should not allow models to interfere with id allocation' do
53
+ class OtherModel < Redis::Objects::Model
54
+ end
55
+
56
+ model = MyModel.create
57
+ other_model = OtherModel.create
58
+
59
+ other_model.id.should == 1
60
+ end
43
61
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-objects-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2013-02-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis-objects
16
- requirement: &7909780 !ruby/object:Gem::Requirement
16
+ requirement: &6999180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.6.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *7909780
24
+ version_requirements: *6999180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: fakeredis
27
- requirement: &7908780 !ruby/object:Gem::Requirement
27
+ requirement: &6998020 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.4.1
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *7908780
35
+ version_requirements: *6998020
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &7908060 !ruby/object:Gem::Requirement
38
+ requirement: &6995320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 10.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *7908060
46
+ version_requirements: *6995320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &7907180 !ruby/object:Gem::Requirement
49
+ requirement: &7012980 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.12.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *7907180
57
+ version_requirements: *7012980
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rubygems-tasks
60
- requirement: &7906040 !ruby/object:Gem::Requirement
60
+ requirement: &7012140 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 0.2.3
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *7906040
68
+ version_requirements: *7012140
69
69
  description: The simplest possible model for redis-objects
70
70
  email:
71
71
  - calvin.walton@kepstin.ca
@@ -75,6 +75,7 @@ extra_rdoc_files: []
75
75
  files:
76
76
  - .gitignore
77
77
  - .rspec
78
+ - .travis.yml
78
79
  - Gemfile
79
80
  - LICENSE.txt
80
81
  - README.md
@@ -98,7 +99,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
99
  version: '0'
99
100
  segments:
100
101
  - 0
101
- hash: 866709580333850131
102
+ hash: -1175797921501167157
102
103
  required_rubygems_version: !ruby/object:Gem::Requirement
103
104
  none: false
104
105
  requirements:
@@ -107,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
108
  version: '0'
108
109
  segments:
109
110
  - 0
110
- hash: 866709580333850131
111
+ hash: -1175797921501167157
111
112
  requirements: []
112
113
  rubyforge_project:
113
114
  rubygems_version: 1.8.11