redis_object 1.3.2 → 1.3.3
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 +8 -8
- data/lib/redis_object.rb +2 -0
- data/lib/redis_object/base.rb +3 -3
- data/lib/redis_object/collection.rb +2 -2
- data/lib/redis_object/experimental/dumping.rb +2 -2
- data/lib/redis_object/ext/benchmark.rb +1 -1
- data/lib/redis_object/ext/cleaner.rb +1 -1
- data/lib/redis_object/ext/script_cache.rb +1 -1
- data/lib/redis_object/ext/view_caching.rb +8 -8
- data/lib/redis_object/logger.rb +47 -0
- data/lib/redis_object/storage.rb +2 -2
- data/lib/redis_object/storage/aws.rb +1 -1
- data/lib/redis_object/storage/redis.rb +3 -3
- data/lib/redis_object/types/date.rb +1 -1
- data/lib/redis_object/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzM4MzMyNzVhNTUxNWY4NDlhZDQ4ZGYxOTIxMDEwZGMxMjY2MjM4Yg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MzU2MWQxMDA1MDUyMGUwYjc1Mzk0MzQxMjBkNTE0NDFmNzhmOTU1MA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZmVlMWJiMTBjNzg4ZDBlNzEzOGQ2ZTJmNzAzNWFhM2QwOGY3NDhiMWI3NmMw
|
10
|
+
ZTcyZGRmM2Y3ZGExZjgzNzI0ZTY1Yzk0MmFkMjJiN2Q0ODM0MzI5ODkyZTBm
|
11
|
+
YjdhMDY2NTkyOTM2N2RiNDIwZGY0YzNjMTk5NzQ5ODk2MTM0MDA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTllMGUzYzk3OTlhOTUwNDQzYmVhYmYzZDk4ZjQ1MjBhYjlhOWZjOTI4OTZi
|
14
|
+
N2E0N2ExODY1NDQ1N2NmYzM3NmY5NWM5NjFjZjYyZGRhY2NmZTY0Y2Y0NzA1
|
15
|
+
YThmNDgxOGQzMTc2MTZkMmYyZTEzZTVjOTJhYzYxODBkMTFiYzI=
|
data/lib/redis_object.rb
CHANGED
data/lib/redis_object/base.rb
CHANGED
@@ -219,10 +219,10 @@ module Seabright
|
|
219
219
|
def generate_id
|
220
220
|
v = new_id
|
221
221
|
while exists?(v) do
|
222
|
-
|
222
|
+
Log.verbose "[RedisObject] Collision at id: #{v}"
|
223
223
|
v = new_id
|
224
224
|
end
|
225
|
-
|
225
|
+
Log.verbose "[RedisObject] Reserving key: #{v}"
|
226
226
|
reserve(v)
|
227
227
|
v
|
228
228
|
end
|
@@ -250,7 +250,7 @@ module Seabright
|
|
250
250
|
if a = find_by_key(hkey(member))
|
251
251
|
y << a
|
252
252
|
else
|
253
|
-
|
253
|
+
Log.debug "[#{name}] Object listed but not found: #{member}"
|
254
254
|
store.srem(plname,member)
|
255
255
|
end
|
256
256
|
end
|
@@ -319,12 +319,12 @@ module Seabright
|
|
319
319
|
def cleanup!
|
320
320
|
each_index do |key|
|
321
321
|
unless a = class_const.find_by_key(at(key))
|
322
|
-
|
322
|
+
Log.debug "Deleting #{key} because not #{a.inspect}"
|
323
323
|
delete at(key)
|
324
324
|
end
|
325
325
|
end
|
326
326
|
if size < 1
|
327
|
-
|
327
|
+
Log.debug "Deleting collection #{@name} because empty"
|
328
328
|
remove!
|
329
329
|
end
|
330
330
|
end
|
@@ -30,7 +30,7 @@ module Seabright
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def self.load_object(klass,pkt)
|
33
|
-
|
33
|
+
Log.debug "Loading a #{klass.name}: #{pkt.inspect}"
|
34
34
|
cols = nil
|
35
35
|
pkt.delete(:collections).each do |col_name|
|
36
36
|
if objs = pkt.delete(col_name.to_sym)
|
@@ -41,7 +41,7 @@ module Seabright
|
|
41
41
|
obj = klass.create(pkt)
|
42
42
|
if cols
|
43
43
|
cols.each do |name,objs|
|
44
|
-
|
44
|
+
Log.debug " Loading in collected #{name}: #{objs.inspect}"
|
45
45
|
obj.collect_type_by_key name, *objs
|
46
46
|
end
|
47
47
|
end
|
@@ -4,7 +4,7 @@ module Seabright
|
|
4
4
|
RedisObject.store.keys("*:collections").each do |key|
|
5
5
|
if obj = RedisObject.find_by_key(key.gsub(/:collections$/,''))
|
6
6
|
obj.collections.each do |nm,col|
|
7
|
-
|
7
|
+
Log.debug "Cleaning: #{nm} #{col.class} #{col.inspect}"
|
8
8
|
col.cleanup!
|
9
9
|
end
|
10
10
|
end
|
@@ -23,7 +23,7 @@ module Seabright
|
|
23
23
|
out = (@tmp_store || store).evalsha(get_script_sha(name,source),keys,args)
|
24
24
|
rescue Redis::CommandError => e
|
25
25
|
if e.message == NoScriptError && @rescue_recurse < 3
|
26
|
-
|
26
|
+
Log.debug "Rescuing NOSCRIPT error for #{name} - running again..."
|
27
27
|
untrack_script name
|
28
28
|
@rescue_recurse += 1
|
29
29
|
out = (@tmp_store || store).evalsha(get_script_sha(name,source),keys,args)
|
@@ -45,10 +45,10 @@ module Seabright
|
|
45
45
|
def view_as_hash(name)
|
46
46
|
return uncached_view_as_hash(name) unless self.class.view_should_be_cached?(name)
|
47
47
|
if v = view_from_cache(name)
|
48
|
-
|
48
|
+
Log.debug " Got view from cache: #{name}"
|
49
49
|
Yajl::Parser.parse(v)
|
50
50
|
else
|
51
|
-
|
51
|
+
Log.debug " View cache miss: #{name}"
|
52
52
|
cache_view_content(name)[0]
|
53
53
|
end
|
54
54
|
end
|
@@ -57,10 +57,10 @@ module Seabright
|
|
57
57
|
def view_as_json(name)
|
58
58
|
return uncached_view_as_json(name) unless self.class.view_should_be_cached?(name)
|
59
59
|
if v = view_from_cache(name)
|
60
|
-
|
60
|
+
Log.debug " Got view from cache: #{name}"
|
61
61
|
v
|
62
62
|
else
|
63
|
-
|
63
|
+
Log.debug " View cache miss: #{name}"
|
64
64
|
cache_view_content(name)[1]
|
65
65
|
end
|
66
66
|
end
|
@@ -107,7 +107,7 @@ module Seabright
|
|
107
107
|
self.class_eval do
|
108
108
|
|
109
109
|
def invalidate_cached_views(*names)
|
110
|
-
|
110
|
+
Log.verbose "Invalidating cached views: #{names.join(", ")}"
|
111
111
|
run_script(:CachedViewInvalidator, [cached_view_key], names, CachedViewInvalidator)
|
112
112
|
self.class.cache_invalidation_hooks do |hook|
|
113
113
|
hook.call(names)
|
@@ -125,7 +125,7 @@ module Seabright
|
|
125
125
|
|
126
126
|
def invalidate_downstream!
|
127
127
|
return unless invalidations(:down).size > 0
|
128
|
-
|
128
|
+
Log.verbose "Invalidating downstream: #{invalidations(:down).inspect}"
|
129
129
|
invalidations(:down).each do |col|
|
130
130
|
if has_collection?(col) and (colctn = get_collection(col))
|
131
131
|
colctn.each do |obj|
|
@@ -137,7 +137,7 @@ module Seabright
|
|
137
137
|
|
138
138
|
def invalidate_upstream!
|
139
139
|
return unless invalidations(:up).size > 0
|
140
|
-
|
140
|
+
Log.verbose "Invalidating upstream: #{invalidations(:up).inspect}"
|
141
141
|
backreferences.each do |obj|
|
142
142
|
obj = Object.const_get(obj) if obj.is_a?(String) or obj.is_a?(Symbol)
|
143
143
|
if invalidations(:up).include?(obj.class) and obj.respond_to?(:invalidated_by_other)
|
@@ -170,7 +170,7 @@ module Seabright
|
|
170
170
|
|
171
171
|
def invalidated_by_other(obj,chain)
|
172
172
|
return if chain.include?(self.hkey)
|
173
|
-
|
173
|
+
Log.verbose "#{self.class.name}:#{self.id}'s view caches were invalidated by upstream object: #{obj.class.name}:#{obj.id} (chain:#{chain.inspect})"
|
174
174
|
@invalidation_chain = chain
|
175
175
|
[:invalidated_by,"invalidated_by_#{obj.class.name.underscore}".to_sym].each do |meth_sym|
|
176
176
|
if respond_to?(meth_sym)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
module Seabright
|
4
|
+
class Log
|
5
|
+
|
6
|
+
class << self
|
7
|
+
|
8
|
+
def verbose(*args)
|
9
|
+
logger.verbose(*args) if logger.respond_to?(:verbose)
|
10
|
+
end
|
11
|
+
|
12
|
+
def debug(*args)
|
13
|
+
logger.debug(*args)
|
14
|
+
end
|
15
|
+
|
16
|
+
def info(*args)
|
17
|
+
logger.info(*args)
|
18
|
+
end
|
19
|
+
|
20
|
+
def warn(*args)
|
21
|
+
logger.warn(*args)
|
22
|
+
end
|
23
|
+
|
24
|
+
def error(*args)
|
25
|
+
logger.error(*args)
|
26
|
+
end
|
27
|
+
|
28
|
+
def fatal(*args)
|
29
|
+
logger.fatal(*args)
|
30
|
+
end
|
31
|
+
|
32
|
+
def logger
|
33
|
+
@@logger ||= Proc.new do
|
34
|
+
lg = Logger.new(STDOUT)
|
35
|
+
lg.level = Logger::WARN
|
36
|
+
lg
|
37
|
+
end.call
|
38
|
+
end
|
39
|
+
|
40
|
+
def logger=(new_logger)
|
41
|
+
@@logger = new_logger
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
data/lib/redis_object/storage.rb
CHANGED
@@ -66,7 +66,7 @@ module Seabright
|
|
66
66
|
raise "Directory does not exist!" unless Dir.exists?(File.dirname(path))
|
67
67
|
adapters.each do |name,adptr|
|
68
68
|
if adptr.respond_to? :dump_to_file
|
69
|
-
|
69
|
+
Log.info "Dumping #{name} into #{path}/#{name.to_s}.dump"
|
70
70
|
adptr.dump_to_file("#{path}/#{name.to_s}.dump")
|
71
71
|
end
|
72
72
|
end
|
@@ -77,7 +77,7 @@ module Seabright
|
|
77
77
|
Dir.glob(path + "/*.dump").each do |file|
|
78
78
|
name = file.gsub(/\.[^\.]+$/,'').gsub(/.*\//,'').to_sym
|
79
79
|
if (stor = store(name)) && stor.respond_to?(:restore_from_file)
|
80
|
-
|
80
|
+
Log.info "Restoring #{name} from #{file}"
|
81
81
|
stor.restore_from_file(file)
|
82
82
|
end
|
83
83
|
end
|
@@ -4,11 +4,11 @@ module Seabright
|
|
4
4
|
|
5
5
|
def method_missing(sym, *args, &block)
|
6
6
|
return super unless connection.respond_to?(sym)
|
7
|
-
|
7
|
+
Log.verbose "[Storage::Redis] #{sym}(#{args.inspect.gsub(/\[|\]/m,'')})"
|
8
8
|
begin
|
9
9
|
connection.send(sym,*args, &block)
|
10
10
|
rescue ::Redis::InheritedError, ::Redis::TimeoutError => err
|
11
|
-
|
11
|
+
Log.debug "Rescued: #{err.inspect}"
|
12
12
|
reset
|
13
13
|
connection.send(sym,*args, &block)
|
14
14
|
end
|
@@ -16,7 +16,7 @@ module Seabright
|
|
16
16
|
|
17
17
|
def new_connection
|
18
18
|
require 'redis'
|
19
|
-
|
19
|
+
Log.debug "Connecting to Redis with: #{config_opts(:path, :db, :password, :host, :port, :timeout, :tcp_keepalive).inspect}"
|
20
20
|
::Redis.new(config_opts(:path, :db, :password, :host, :port, :timeout, :tcp_keepalive))
|
21
21
|
end
|
22
22
|
|
@@ -6,7 +6,7 @@ module Seabright
|
|
6
6
|
begin
|
7
7
|
val.is_a?(DateTime) || val.is_a?(Date) || val.is_a?(Time) ? val : ( val.is_a?(String) ? DateTime.parse(val) : nil )
|
8
8
|
rescue StandardError => e
|
9
|
-
|
9
|
+
Log.debug "Could not parse value as date using Date.parse. Returning nil instead. Value: #{val.inspect}\nError: #{e.inspect}"
|
10
10
|
nil
|
11
11
|
end
|
12
12
|
end
|
data/lib/redis_object/version.rb
CHANGED
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.3.
|
4
|
+
version: 1.3.3
|
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-07-
|
11
|
+
date: 2013-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: utf8_utils
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- lib/redis_object/indices.rb
|
115
115
|
- lib/redis_object/inheritance_tracking.rb
|
116
116
|
- lib/redis_object/keys.rb
|
117
|
+
- lib/redis_object/logger.rb
|
117
118
|
- lib/redis_object/storage.rb
|
118
119
|
- lib/redis_object/storage/adapter.rb
|
119
120
|
- lib/redis_object/storage/aws.rb
|