redis-objects 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- value :weird_key, :key => 'players:weird_key:#{raise}', :global => true
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('players:weird_key:#{raise}').should == 'tuka'
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.7.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-02-27 00:00:00.000000000 Z
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: 1.2.0
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: 1.2.0
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: nwiger@gmail.com
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: 1.8.24
161
+ rubygems_version: 2.0.3
123
162
  signing_key:
124
- specification_version: 3
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