redis_object 1.4.3 → 1.4.5

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OWI1ZmE4MzE0MjFiNzYyNTNmOTNiMmQxZmRkNmJhMjA3Zjc3ZGU3ZA==
4
+ ZmEzMTFmMmU3MTcyZDllYzYwYjQ0YzM5ZGE1ZGQ4NjI5MDI2MjVmYw==
5
5
  data.tar.gz: !binary |-
6
- YmI5NTdlMjY5ODZjNTdjMTU4YTI3NDJhMmQ3MTA3MDg0ZDNhYjUzZg==
6
+ YTMzYTdjZDg4ZWIzNDE1ODliYTY0N2I5YTYwYTQ5ZGUyNjY5MjFhOQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- Njg0ZTllYjQ1NTA1MzU1NWQ5NjdjMTFhN2ZjNDUyYzJhZWIwOTJhMGMyMjY2
10
- YWFiYzg2MzYxNmU4NGFmOWUwZDU5OTI5MzVjZmM3NWM5Y2QwNTdhZDc0OWY4
11
- MGM2ODdlNjdiZDBjN2RkMThkYTI0MzlkNmQ0MTkzZWRkMjFmZWE=
9
+ NzdkNzFlNjc4OWM3ZWVhMmI2YzBjMWZiMDhhMmZjNjliOWI2NzhhNDZiOThl
10
+ NWYzYzhiMzJiYzE4MTdlMjZiZWU3MDBhMzk4NDBiOTdlM2Y4MTgzMmI1Mzk5
11
+ Njk0YjRhZmJiMWEzYjk3YWNmYjQwYmJhNTUyNzdmOWI1ZDdhYmI=
12
12
  data.tar.gz: !binary |-
13
- MWRmNTZmNjRlODhkMGJkNmNmNmQxOTVhNjQ2YTY0MDQ4MDUxNWMyNTQ2NjIx
14
- NTA1YjQ2ZWVmMTBlNzlkNDEyNTYwNmUyNmIzNmU0Mjk1MTQxNDcyODk3OWNj
15
- NzA2MGRkMjNmYTIzZTkyYjQzZDgzMzlmZDZjZGI4MzBiNjEzOTY=
13
+ MzViYzViZDBjOTFlOTVkZmVkZjg2ZTFmNWJkM2ZmY2I2NjUwMzhmNjI3MzYz
14
+ M2Q2OTllODgwZGUwZWM1ZTFmYTc3Yjg5ZWRmNTJjYzQ4MjA2ZTJmOTk1ZjI3
15
+ ZWVkNDk0NmMxYmE4YWYwM2VjY2ZlYjhlOTMxMGJlZmY4NjAzYTI=
@@ -334,17 +334,20 @@ module Seabright
334
334
  good = good
335
335
  else
336
336
  good = false
337
+ break
337
338
  end
338
339
  else
339
340
  if val ~= matchers[n][2] then
340
341
  good = false
342
+ break
341
343
  end
342
344
  end
343
345
  else
344
346
  if matchers[n][2] == '#{NilPattern}' then
345
- good = true
347
+ good = good
346
348
  else
347
349
  good = false
350
+ break
348
351
  end
349
352
  end
350
353
  end
@@ -4,21 +4,32 @@ require 'active_support/core_ext/time/calculations'
4
4
  module Seabright
5
5
  class RedisObject
6
6
 
7
- def self.dump_everything(file=nil)
7
+ def self.dump_everything(dump_format=:hash)
8
8
  out = {}
9
9
  ObjectSpace.enum_for(:each_object, class << RedisObject; self; end).each do |cls|
10
10
  unless cls == RedisObject
11
- out[cls.name] = {}
12
- out[cls.name][:objects] = cls.all.map do |obj|
13
- obj.full_hash_dump
14
- end
11
+ out.merge! cls.dump_all(:hash)
15
12
  end
16
13
  end
17
- Psych.dump(out)
14
+ Dumping.format_dump out, dump_format
15
+ end
16
+
17
+ def self.load_dump(str,dump_format=:hash)
18
+ case dump_format
19
+ when :hash
20
+ load_dump_from_hash str
21
+ when :yaml, :yml
22
+ load_dump_from_yaml str
23
+ # JSON format is not ready yet!
24
+ # when :json
25
+ # load_dump_from_json str
26
+ else
27
+ raise "Unknown dump format."
28
+ end
18
29
  end
19
30
 
20
- def self.load_dump(str)
21
- Psych.load(str).each do |(k,v)|
31
+ def self.load_data(dat)
32
+ dat.each do |(k,v)|
22
33
  if klass = RedisObject.deep_const_get(k)
23
34
  if v[:objects]
24
35
  v[:objects].each do |o|
@@ -29,6 +40,19 @@ module Seabright
29
40
  end
30
41
  end
31
42
 
43
+ def self.load_dump_from_yaml(str)
44
+ load_data Psych.load(str)
45
+ end
46
+
47
+ def self.load_dump_from_hash(str)
48
+ load_data str
49
+ end
50
+
51
+ # JSON format is not ready yet!
52
+ # def self.load_dump_from_json(str)
53
+ # load_data Yajl::Parser.new(symbolize_keys: true).parse(str)
54
+ # end
55
+
32
56
  def self.load_object(klass,pkt)
33
57
  Log.debug "Loading a #{klass.name}: #{pkt.inspect}"
34
58
  cols = nil
@@ -59,6 +83,20 @@ module Seabright
59
83
  # end
60
84
  # end
61
85
 
86
+ def self.format_dump(dump,format=:hash)
87
+ case format
88
+ when :hash
89
+ return dump
90
+ when :yaml, :yml
91
+ return Psych.dump(dump)
92
+ # JSON format is not ready yet!
93
+ # when :json
94
+ # return Yajl::Encoder.encode(dump)
95
+ else
96
+ return dump
97
+ end
98
+ end
99
+
62
100
  def full_hash_dump
63
101
  store.hgetall(hkey).inject({}) {|acc,(k,v)| acc[k.to_sym] = enforce_format(k,v); acc }.merge(dump_collections)
64
102
  end
@@ -83,7 +121,14 @@ module Seabright
83
121
 
84
122
  module ClassMethods
85
123
 
86
-
124
+ def dump_all(dump_format=:hash)
125
+ out = {}
126
+ out[self.name] = {}
127
+ out[self.name][:objects] = all.map do |obj|
128
+ obj.full_hash_dump
129
+ end
130
+ Dumping.format_dump out, dump_format
131
+ end
87
132
 
88
133
  end
89
134
 
@@ -1,5 +1,5 @@
1
1
  module Seabright
2
2
  class RedisObject
3
- VERSION = "1.4.3"
3
+ VERSION = "1.4.5"
4
4
  end
5
5
  end
data/spec/base_spec.rb CHANGED
@@ -55,6 +55,13 @@ describe RedisObject do
55
55
  obj.first.should_not be_nil
56
56
  end
57
57
 
58
+ it "should be found/not-found by nil composite matchers" do
59
+ obj = ObjectTests::User.find(blah: nil, user_id: "test")
60
+ obj.first.should_not be_nil
61
+ obj = ObjectTests::User.find(blah: nil, user_id: "blah")
62
+ obj.first.should be_nil
63
+ end
64
+
58
65
  it "should be found by regex matchers that do not exist as keys" do
59
66
  obj = ObjectTests::User.find(blah: /test/)
60
67
  obj.first.should be_nil
data/spec/dumping_spec.rb CHANGED
@@ -41,19 +41,39 @@ module DumpingSpec
41
41
 
42
42
  it "can dump errthing" do
43
43
 
44
- r = RedisObject.dump_everything
44
+ r = RedisObject.dump_everything(:yml)
45
45
  r.size.should > 100
46
+ # r = RedisObject.dump_everything(:json)
47
+ # r.size.should > 100
48
+
49
+ end
50
+
51
+ it "can dump a single class" do
52
+
53
+ r = RedisObject.dump_everything(:yml)
54
+ r.size.should > 100
55
+ d = DumpableObject.dump_all(:yml)
56
+ d.size.should > 100
57
+ d.size.should < r.size
58
+ # r = RedisObject.dump_everything(:json)
59
+ # r.size.should > 100
46
60
 
47
61
  end
48
62
 
49
63
  it "can load back in a dump" do
50
64
 
51
- r = RedisObject.dump_everything
65
+ r = RedisObject.dump_everything(:yml)
52
66
  r.size.should > 100
53
67
  RedisObject.store.flushdb
54
- RedisObject.load_dump r
68
+ RedisObject.load_dump r, :yml
55
69
  DumpableObject.latest.generic_objects.count.should eq(1)
56
70
 
71
+ # r = RedisObject.dump_everything(:json)
72
+ # r.size.should > 100
73
+ # RedisObject.store.flushdb
74
+ # RedisObject.load_dump r, :json
75
+ # DumpableObject.latest.generic_objects.count.should eq(1)
76
+
57
77
  end
58
78
 
59
79
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Bragg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-16 00:00:00.000000000 Z
11
+ date: 2013-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: utf8_utils