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 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: