redis_object 1.2 → 1.2.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.
- checksums.yaml +15 -0
- data/lib/redis_object/base.rb +10 -8
- data/lib/redis_object/indices.rb +14 -12
- data/lib/redis_object/storage/redis.rb +1 -5
- data/lib/redis_object/types/json.rb +1 -1
- data/lib/redis_object/version.rb +1 -1
- data/spec/types_spec.rb +9 -0
- metadata +5 -15
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
N2RlY2YxYmY1ZWY0ZWFlODA1ZTg0MWM3ZDhmYWFjNmU0MWY1ZWM5Yw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NTBjOTBmYTgyNTc2NTc3NzU5MTRlOWQ3NWQ3NTI4MTM1YTViZWUxYg==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
OTdiN2Q1NjRjNDUzMjgxMjA0ZGIwYjQwMDUxYmJkYWZlODlhNWQyZWQyODk4
|
10
|
+
ODhhZDA2Y2I3MzQ4ZjVhZWIxMGUyYTY1YWMzNzViZjZmZDcxMmUyNGZhZjkw
|
11
|
+
NWRkYjJiMmFkNWZhZWFhN2FmNDRhNTNiNGYyOTFmZTQ4ZjNjZDk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MzY5ODIzOGJkMWFiMTVhOGVlNGMzY2MxYWRkMDUzYzJhZTI1NmQxNTM2YTQz
|
14
|
+
ODRlNjg5Yjg4NGI0MTlkMDRhYTUzNGI3ODg5MGE3Yzc3MDM5YWMyNDYyYWVm
|
15
|
+
ZDY2YzQzOTI1NjdmODE1YmU4YjBhNjc1MjY0MWVlYzgyMDU3NmQ=
|
data/lib/redis_object/base.rb
CHANGED
@@ -71,14 +71,16 @@ module Seabright
|
|
71
71
|
alias_method :actual, :raw
|
72
72
|
|
73
73
|
def get(k)
|
74
|
-
cached_hash_values[k.to_s] ||=
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
74
|
+
cached_hash_values[k.to_s] ||= _get(k)
|
75
|
+
end
|
76
|
+
|
77
|
+
def _get(k)
|
78
|
+
if is_ref_key?(k) && (v = get_reference(store.hget(hkey, k.to_s)))
|
79
|
+
define_setter_getter(k)
|
80
|
+
elsif v = store.hget(hkey, k.to_s)
|
81
|
+
define_setter_getter(k)
|
82
|
+
end
|
83
|
+
v
|
82
84
|
end
|
83
85
|
|
84
86
|
def [](k)
|
data/lib/redis_object/indices.rb
CHANGED
@@ -10,15 +10,26 @@ module Seabright
|
|
10
10
|
def intercept_sets_for_indices!
|
11
11
|
return if @intercepted_sets_for_indices
|
12
12
|
self.class_eval do
|
13
|
-
|
14
|
-
def
|
15
|
-
ret =
|
13
|
+
|
14
|
+
def indexed_set_method(meth,k,v)
|
15
|
+
ret = send("unindexed_#{meth}".to_sym,k,v)
|
16
16
|
if self.class.has_sort_index?(k)
|
17
17
|
store.zrem(index_key(k), hkey)
|
18
18
|
store.zadd(index_key(k), score_format(k,v), hkey)
|
19
19
|
end
|
20
20
|
ret
|
21
21
|
end
|
22
|
+
|
23
|
+
alias_method :unindexed_set, :set unless method_defined?(:unindexed_set)
|
24
|
+
def set(k,v)
|
25
|
+
indexed_set_method(:set,k,v)
|
26
|
+
end
|
27
|
+
|
28
|
+
alias_method :unindexed_setnx, :setnx unless method_defined?(:unindexed_setnx)
|
29
|
+
def setnx(k,v)
|
30
|
+
indexed_set_method(:setnx,k,v)
|
31
|
+
end
|
32
|
+
|
22
33
|
alias_method :unindexed_mset, :mset unless method_defined?(:unindexed_mset)
|
23
34
|
def mset(dat)
|
24
35
|
ret = unindexed_mset(dat)
|
@@ -28,15 +39,6 @@ module Seabright
|
|
28
39
|
end
|
29
40
|
ret
|
30
41
|
end
|
31
|
-
alias_method :unindexed_setnx, :setnx unless method_defined?(:unindexed_setnx)
|
32
|
-
def setnx(k,v)
|
33
|
-
ret = unindexed_setnx(k,v)
|
34
|
-
if self.class.has_sort_index?(k)
|
35
|
-
store.zrem(index_key(k), hkey)
|
36
|
-
store.zadd(index_key(k), score_format(k,v), hkey)
|
37
|
-
end
|
38
|
-
ret
|
39
|
-
end
|
40
42
|
|
41
43
|
end
|
42
44
|
@intercepted_sets_for_indices = true
|
@@ -7,14 +7,10 @@ module Seabright
|
|
7
7
|
puts "[Storage::Redis] #{sym}(#{args.inspect.gsub(/\[|\]/m,'')})" if Debug.verbose?
|
8
8
|
begin
|
9
9
|
connection.send(sym,*args, &block)
|
10
|
-
rescue ::Redis::InheritedError => err
|
10
|
+
rescue ::Redis::InheritedError, ::Redis::TimeoutError => err
|
11
11
|
puts "Rescued: #{err.inspect}" if DEBUG
|
12
12
|
reset
|
13
13
|
connection.send(sym,*args, &block)
|
14
|
-
rescue ::Redis::TimeoutError => err
|
15
|
-
puts "Rescued connection timeout: #{err.inspect}" if DEBUG
|
16
|
-
reset
|
17
|
-
connection.send(sym,*args, &block)
|
18
14
|
end
|
19
15
|
end
|
20
16
|
|
data/lib/redis_object/version.rb
CHANGED
data/spec/types_spec.rb
CHANGED
@@ -16,6 +16,7 @@ module TypeSpec
|
|
16
16
|
TestData = TestValues.inject({}){|acc,(k,v)| acc["a_#{k}".to_sym] = v; acc }
|
17
17
|
|
18
18
|
class TypedObject < RedisObject
|
19
|
+
json :another_json
|
19
20
|
TestValues.keys.each do |type|
|
20
21
|
send(type.to_sym,"a_#{type}".to_sym)
|
21
22
|
end
|
@@ -89,6 +90,14 @@ module TypeSpec
|
|
89
90
|
|
90
91
|
end
|
91
92
|
|
93
|
+
it "can get unset json field" do
|
94
|
+
|
95
|
+
obj = TypedObject.new
|
96
|
+
|
97
|
+
obj.another_json.should eq(nil)
|
98
|
+
|
99
|
+
end
|
100
|
+
|
92
101
|
it "describes itself" do
|
93
102
|
|
94
103
|
obj = TypedObject.create(TestData)
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis_object
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 1.2.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- John Bragg
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-19 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: utf8_utils
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ! '>='
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
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
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: redis
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ! '>='
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ! '>='
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: yajl-ruby
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ! '>='
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ! '>='
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,7 +55,6 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: activesupport
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ! '>='
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ! '>='
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -140,27 +131,26 @@ files:
|
|
140
131
|
- spec/views_spec.rb
|
141
132
|
homepage: ''
|
142
133
|
licenses: []
|
134
|
+
metadata: {}
|
143
135
|
post_install_message:
|
144
136
|
rdoc_options: []
|
145
137
|
require_paths:
|
146
138
|
- lib
|
147
139
|
required_ruby_version: !ruby/object:Gem::Requirement
|
148
|
-
none: false
|
149
140
|
requirements:
|
150
141
|
- - ! '>='
|
151
142
|
- !ruby/object:Gem::Version
|
152
143
|
version: 1.9.2
|
153
144
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
|
-
none: false
|
155
145
|
requirements:
|
156
146
|
- - ! '>='
|
157
147
|
- !ruby/object:Gem::Version
|
158
148
|
version: '0'
|
159
149
|
requirements: []
|
160
150
|
rubyforge_project: redis_object
|
161
|
-
rubygems_version:
|
151
|
+
rubygems_version: 2.0.3
|
162
152
|
signing_key:
|
163
|
-
specification_version:
|
153
|
+
specification_version: 4
|
164
154
|
summary: Maps arbitrary objects to a Redis store with indices and smart retrieval
|
165
155
|
and storage mechanisms.
|
166
156
|
test_files:
|