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 +4 -0
- data/README.md +2 -0
- data/lib/redis-objects-model.rb +6 -2
- data/lib/redis-objects-model/version.rb +1 -1
- data/spec/redis-objects-model_spec.rb +25 -7
- metadata +14 -13
data/.travis.yml
ADDED
data/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# redis-objects-model
|
|
2
2
|
|
|
3
|
+
[](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
|
data/lib/redis-objects-model.rb
CHANGED
|
@@ -19,7 +19,11 @@ class Redis
|
|
|
19
19
|
class Model
|
|
20
20
|
include Redis::Objects
|
|
21
21
|
|
|
22
|
-
|
|
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 =
|
|
48
|
+
@id || @id = self.redis.incr(self.redis_objects_model_next_id)
|
|
45
49
|
end
|
|
46
50
|
|
|
47
51
|
#########################################################################
|
|
@@ -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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
27
|
-
model_2 =
|
|
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 =
|
|
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 =
|
|
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.
|
|
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: &
|
|
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: *
|
|
24
|
+
version_requirements: *6999180
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: fakeredis
|
|
27
|
-
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: *
|
|
35
|
+
version_requirements: *6998020
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: rake
|
|
38
|
-
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: *
|
|
46
|
+
version_requirements: *6995320
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: rspec
|
|
49
|
-
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: *
|
|
57
|
+
version_requirements: *7012980
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
59
|
name: rubygems-tasks
|
|
60
|
-
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: *
|
|
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:
|
|
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:
|
|
111
|
+
hash: -1175797921501167157
|
|
111
112
|
requirements: []
|
|
112
113
|
rubyforge_project:
|
|
113
114
|
rubygems_version: 1.8.11
|