redis_object 1.2 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
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=
@@ -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] ||= Proc.new {|key|
75
- if is_ref_key?(k) && (v = get_reference(store.hget(hkey, key.to_s)))
76
- define_setter_getter(key)
77
- elsif v = store.hget(hkey, key.to_s)
78
- define_setter_getter(key)
79
- end
80
- v
81
- }.call(k)
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)
@@ -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
- alias_method :unindexed_set, :set unless method_defined?(:unindexed_set)
14
- def set(k,v)
15
- ret = unindexed_set(k,v)
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
 
@@ -3,7 +3,7 @@ module Seabright
3
3
  module JsonType
4
4
 
5
5
  def format_json(val)
6
- Yajl::Parser.new(:symbolize_keys => true).parse(val)
6
+ Yajl::Parser.new(:symbolize_keys => true).parse(val || "")
7
7
  end
8
8
 
9
9
  def save_json(val)
@@ -1,5 +1,5 @@
1
1
  module Seabright
2
2
  class RedisObject
3
- VERSION = "1.2"
3
+ VERSION = "1.2.1"
4
4
  end
5
5
  end
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: '1.2'
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-17 00:00:00.000000000 Z
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: 1.8.23
151
+ rubygems_version: 2.0.3
162
152
  signing_key:
163
- specification_version: 3
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: