redis-objects-model 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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