redis-objects 0.7.0 → 0.8.0
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.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.travis.yml +4 -0
- data/CHANGELOG.rdoc +16 -0
- data/Gemfile +3 -7
- data/LICENSE +202 -0
- data/README.md +36 -23
- data/Rakefile +2 -55
- data/lib/redis/hash_key.rb +1 -1
- data/lib/redis/list.rb +9 -9
- data/lib/redis/objects.rb +23 -25
- data/lib/redis/objects/counters.rb +19 -16
- data/lib/redis/objects/hashes.rb +19 -16
- data/lib/redis/objects/lists.rb +19 -16
- data/lib/redis/objects/locks.rb +19 -16
- data/lib/redis/objects/sets.rb +19 -17
- data/lib/redis/objects/sorted_sets.rb +19 -16
- data/lib/redis/objects/values.rb +25 -26
- data/lib/redis/objects/version.rb +5 -0
- data/lib/redis/sorted_set.rb +11 -5
- data/redis-objects.gemspec +25 -71
- data/spec/redis_objects_instance_spec.rb +88 -46
- data/spec/redis_objects_model_spec.rb +37 -11
- metadata +74 -28
@@ -25,7 +25,10 @@ class Roster
|
|
25
25
|
list :all_player_stats, :key => 'players:all_stats', :global => true
|
26
26
|
set :total_wins, :key => 'players:#{id}:all_stats'
|
27
27
|
value :my_rank, :key => 'players:my_rank:#{username}'
|
28
|
-
|
28
|
+
|
29
|
+
# now support class interpolation as well. not sure why not previously
|
30
|
+
def self.jimmyhat; 350; end
|
31
|
+
value :weird_key, :key => 'players:weird_key:#{jimmyhat}', :global => true
|
29
32
|
|
30
33
|
#callable as key
|
31
34
|
counter :daily, :global => true, :key => Proc.new { |roster| "#{roster.name}:#{Time.now.strftime('%Y-%m-%dT%H')}:daily" }
|
@@ -63,6 +66,17 @@ class CustomMethodRoster < MethodRoster
|
|
63
66
|
counter :basic
|
64
67
|
end
|
65
68
|
|
69
|
+
class UidRoster < Roster
|
70
|
+
attr_accessor :uid
|
71
|
+
def initialize(uid=123) @uid = uid end
|
72
|
+
end
|
73
|
+
|
74
|
+
class CustomIdFieldRoster < UidRoster
|
75
|
+
redis_id_field :uid
|
76
|
+
include Redis::Objects
|
77
|
+
counter :basic
|
78
|
+
end
|
79
|
+
|
66
80
|
describe Redis::Objects do
|
67
81
|
before do
|
68
82
|
@roster = Roster.new
|
@@ -125,7 +139,7 @@ describe Redis::Objects do
|
|
125
139
|
@roster.my_rank = 'a'
|
126
140
|
@roster.redis.get('players:my_rank:user1').should == 'a'
|
127
141
|
Roster.weird_key = 'tuka'
|
128
|
-
Roster.redis.get(
|
142
|
+
Roster.redis.get("players:weird_key:#{Roster.jimmyhat}").should == 'tuka'
|
129
143
|
|
130
144
|
k = "Roster:#{Time.now.strftime('%Y-%m-%dT%H')}:daily"
|
131
145
|
@roster.daily.incr
|
@@ -501,30 +515,33 @@ describe Redis::Objects do
|
|
501
515
|
@roster.player_stats.size.should == 4
|
502
516
|
@roster.player_stats.should == ['a','c','f','j']
|
503
517
|
@roster.player_stats.get.should == ['a','c','f','j']
|
518
|
+
@roster.player_stats.push *['h','i']
|
519
|
+
@roster.player_stats.should == ['a','c','f','j','h','i']
|
520
|
+
@roster.player_stats.get.should == ['a','c','f','j','h','i']
|
504
521
|
|
505
522
|
i = -1
|
506
523
|
@roster.player_stats.each do |st|
|
507
524
|
st.should == @roster.player_stats[i += 1]
|
508
525
|
end
|
509
|
-
@roster.player_stats.should == ['a','c','f','j']
|
510
|
-
@roster.player_stats.get.should == ['a','c','f','j']
|
526
|
+
@roster.player_stats.should == ['a','c','f','j','h','i']
|
527
|
+
@roster.player_stats.get.should == ['a','c','f','j','h','i']
|
511
528
|
|
512
529
|
@roster.player_stats.each_with_index do |st,i|
|
513
530
|
st.should == @roster.player_stats[i]
|
514
531
|
end
|
515
|
-
@roster.player_stats.should == ['a','c','f','j']
|
516
|
-
@roster.player_stats.get.should == ['a','c','f','j']
|
532
|
+
@roster.player_stats.should == ['a','c','f','j','h','i']
|
533
|
+
@roster.player_stats.get.should == ['a','c','f','j','h','i']
|
517
534
|
|
518
535
|
coll = @roster.player_stats.collect{|st| st}
|
519
|
-
coll.should == ['a','c','f','j']
|
520
|
-
@roster.player_stats.should == ['a','c','f','j']
|
521
|
-
@roster.player_stats.get.should == ['a','c','f','j']
|
536
|
+
coll.should == ['a','c','f','j','h','i']
|
537
|
+
@roster.player_stats.should == ['a','c','f','j','h','i']
|
538
|
+
@roster.player_stats.get.should == ['a','c','f','j','h','i']
|
522
539
|
|
523
540
|
@roster.player_stats << 'a'
|
524
541
|
coll = @roster.player_stats.select{|st| st == 'a'}
|
525
542
|
coll.should == ['a','a']
|
526
|
-
@roster.player_stats.should == ['a','c','f','j','a']
|
527
|
-
@roster.player_stats.get.should == ['a','c','f','j','a']
|
543
|
+
@roster.player_stats.should == ['a','c','f','j','h','i','a']
|
544
|
+
@roster.player_stats.get.should == ['a','c','f','j','h','i','a']
|
528
545
|
end
|
529
546
|
|
530
547
|
it "should handle sets of simple values" do
|
@@ -844,6 +861,15 @@ describe Redis::Objects do
|
|
844
861
|
@custom_method_roster.basic.should.be.kind_of(Redis::Counter)
|
845
862
|
end
|
846
863
|
|
864
|
+
it "should persist object with custom id field name" do
|
865
|
+
@custom_id_field_roster = CustomIdFieldRoster.new()
|
866
|
+
@custom_id_field_roster.uid.should == 123 # sanity
|
867
|
+
@custom_id_field_roster.increment(:basic).should == 1
|
868
|
+
@custom_id_field_roster.basic.increment.should == 2
|
869
|
+
@custom_id_field_roster.basic.reset
|
870
|
+
@custom_id_field_roster.basic.should == 0
|
871
|
+
end
|
872
|
+
|
847
873
|
it "should pick up class methods from superclass automatically" do
|
848
874
|
CounterRoster = Class.new(Roster)
|
849
875
|
CounterRoster.counter :extended_counter
|
metadata
CHANGED
@@ -1,74 +1,112 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-objects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.8.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Nate Wiger
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-11-09 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: redis
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 3.0.2
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 3.0.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
30
55
|
- !ruby/object:Gem::Dependency
|
31
56
|
name: bacon
|
32
57
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
58
|
requirements:
|
35
|
-
- -
|
59
|
+
- - '>='
|
36
60
|
- !ruby/object:Gem::Version
|
37
61
|
version: '0'
|
38
62
|
type: :development
|
39
63
|
prerelease: false
|
40
64
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
65
|
requirements:
|
43
|
-
- -
|
66
|
+
- - '>='
|
44
67
|
- !ruby/object:Gem::Version
|
45
68
|
version: '0'
|
46
69
|
- !ruby/object:Gem::Dependency
|
47
70
|
name: redis-namespace
|
48
71
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
72
|
requirements:
|
51
|
-
- -
|
73
|
+
- - '>='
|
52
74
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
75
|
+
version: '0'
|
54
76
|
type: :development
|
55
77
|
prerelease: false
|
56
78
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
79
|
requirements:
|
59
|
-
- -
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: activerecord
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
60
88
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
89
|
+
version: '3.2'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.2'
|
62
97
|
description: Map Redis types directly to Ruby objects. Works with any class or ORM.
|
63
|
-
email:
|
98
|
+
email:
|
99
|
+
- nwiger@gmail.com
|
64
100
|
executables: []
|
65
101
|
extensions: []
|
66
|
-
extra_rdoc_files:
|
67
|
-
- README.md
|
102
|
+
extra_rdoc_files: []
|
68
103
|
files:
|
104
|
+
- .gitignore
|
105
|
+
- .travis.yml
|
69
106
|
- ATOMICITY.rdoc
|
70
107
|
- CHANGELOG.rdoc
|
71
108
|
- Gemfile
|
109
|
+
- LICENSE
|
72
110
|
- README.md
|
73
111
|
- Rakefile
|
74
112
|
- VERSION
|
@@ -88,6 +126,7 @@ files:
|
|
88
126
|
- lib/redis/objects/sets.rb
|
89
127
|
- lib/redis/objects/sorted_sets.rb
|
90
128
|
- lib/redis/objects/values.rb
|
129
|
+
- lib/redis/objects/version.rb
|
91
130
|
- lib/redis/set.rb
|
92
131
|
- lib/redis/sorted_set.rb
|
93
132
|
- lib/redis/value.rb
|
@@ -100,27 +139,34 @@ files:
|
|
100
139
|
- spec/redis_objects_model_spec.rb
|
101
140
|
- spec/spec_helper.rb
|
102
141
|
homepage: http://github.com/nateware/redis-objects
|
103
|
-
licenses:
|
142
|
+
licenses:
|
143
|
+
- Artistic
|
144
|
+
metadata: {}
|
104
145
|
post_install_message:
|
105
146
|
rdoc_options: []
|
106
147
|
require_paths:
|
107
148
|
- lib
|
108
149
|
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
-
none: false
|
110
150
|
requirements:
|
111
|
-
- -
|
151
|
+
- - '>='
|
112
152
|
- !ruby/object:Gem::Version
|
113
153
|
version: '0'
|
114
154
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
-
none: false
|
116
155
|
requirements:
|
117
|
-
- -
|
156
|
+
- - '>='
|
118
157
|
- !ruby/object:Gem::Version
|
119
158
|
version: '0'
|
120
159
|
requirements: []
|
121
160
|
rubyforge_project:
|
122
|
-
rubygems_version:
|
161
|
+
rubygems_version: 2.0.3
|
123
162
|
signing_key:
|
124
|
-
specification_version:
|
163
|
+
specification_version: 4
|
125
164
|
summary: Map Redis types directly to Ruby objects
|
126
|
-
test_files:
|
165
|
+
test_files:
|
166
|
+
- spec/redis_autoload_objects_spec.rb
|
167
|
+
- spec/redis_namespace_compat_spec.rb
|
168
|
+
- spec/redis_objects_active_record_spec.rb
|
169
|
+
- spec/redis_objects_conn_spec.rb
|
170
|
+
- spec/redis_objects_instance_spec.rb
|
171
|
+
- spec/redis_objects_model_spec.rb
|
172
|
+
- spec/spec_helper.rb
|