aub-cache_advance 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/cache_advance.gemspec +1 -1
- data/lib/cache_advance/cache_set.rb +15 -9
- data/lib/cache_advance/named_cache.rb +11 -7
- data/rails/init.rb +6 -5
- metadata +1 -1
data/cache_advance.gemspec
CHANGED
@@ -3,8 +3,6 @@ module CacheAdvance
|
|
3
3
|
attr_reader :named_caches
|
4
4
|
attr_reader :qualifiers
|
5
5
|
attr_reader :plugins
|
6
|
-
attr_accessor :sweeper_type
|
7
|
-
attr_accessor :cache
|
8
6
|
|
9
7
|
def initialize
|
10
8
|
@named_caches = {}
|
@@ -13,9 +11,9 @@ module CacheAdvance
|
|
13
11
|
end
|
14
12
|
|
15
13
|
def apply(cache_name, request, options, &block)
|
16
|
-
|
17
|
-
raise UnknownNamedCacheException if
|
18
|
-
|
14
|
+
named_cache = @named_caches[cache_name]
|
15
|
+
raise UnknownNamedCacheException if named_cache.nil?
|
16
|
+
named_cache.value_for(request, options, &block)
|
19
17
|
end
|
20
18
|
|
21
19
|
def add_qualifier(name, proc)
|
@@ -27,7 +25,7 @@ module CacheAdvance
|
|
27
25
|
end
|
28
26
|
|
29
27
|
def add_named_cache(name, options)
|
30
|
-
@named_caches[name] = NamedCache.new(name, options, self, cache)
|
28
|
+
@named_caches[name] = NamedCache.new(name, options, self, @cache)
|
31
29
|
end
|
32
30
|
|
33
31
|
def define_caches
|
@@ -35,13 +33,21 @@ module CacheAdvance
|
|
35
33
|
end
|
36
34
|
|
37
35
|
def create_sweepers
|
38
|
-
sweeper_type.initialize_observed(@named_caches.values.map { |c| c.expiration_types }.flatten.compact.uniq)
|
36
|
+
@sweeper_type.initialize_observed(@named_caches.values.map { |c| c.expiration_types }.flatten.compact.uniq)
|
39
37
|
end
|
40
38
|
|
41
39
|
def expire_for_class(class_name)
|
42
|
-
@named_caches.values.each do |
|
43
|
-
|
40
|
+
@named_caches.values.each do |named_cache|
|
41
|
+
named_cache.expire_for(class_name)
|
44
42
|
end
|
45
43
|
end
|
44
|
+
|
45
|
+
def cache_type=(type)
|
46
|
+
@cache = type.new
|
47
|
+
end
|
48
|
+
|
49
|
+
def sweeper_type=(type)
|
50
|
+
@sweeper_type = type
|
51
|
+
end
|
46
52
|
end
|
47
53
|
end
|
@@ -26,14 +26,16 @@ module CacheAdvance
|
|
26
26
|
key = key_for(request, options[:key])
|
27
27
|
|
28
28
|
if (cache = @cache.read(key))
|
29
|
-
|
29
|
+
each_plugin { |p| p.send('after_read', @name, key, request, cache) if p.respond_to?('after_read') }
|
30
30
|
return cache
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
|
+
each_plugin { |p| p.send('before_render', @name, key, request) if p.respond_to?('before_render') }
|
33
34
|
result = block.call
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
each_plugin { |p| p.send('after_render', @name, key, request, result) if p.respond_to?('after_render') }
|
36
|
+
each_plugin { |p| p.send('before_write', @name, key, request, result) if p.respond_to?('before_write') }
|
37
|
+
@cache.write(key, result, rails_options)
|
38
|
+
each_plugin { |p| p.send('after_write', @name, key, request, result) if p.respond_to?('after_write') }
|
37
39
|
|
38
40
|
add_to_cached_keys_list(key)
|
39
41
|
|
@@ -75,8 +77,10 @@ module CacheAdvance
|
|
75
77
|
|
76
78
|
protected
|
77
79
|
|
78
|
-
def
|
79
|
-
@cache_set.plugins.each
|
80
|
+
def each_plugin
|
81
|
+
@cache_set.plugins.each do |p|
|
82
|
+
yield p
|
83
|
+
end
|
80
84
|
end
|
81
85
|
|
82
86
|
def add_to_cached_keys_list(key)
|
data/rails/init.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
require 'cache_advance'
|
2
2
|
require 'cache_advance/active_record_sweeper'
|
3
3
|
require 'cache_advance/rails_cache'
|
4
|
+
|
5
|
+
# Setup the sweeper and cache types as appropriate for Rails.
|
6
|
+
CacheAdvance::Caches.sweeper_type = CacheAdvance::ActiveRecordSweeper
|
7
|
+
CacheAdvance::Caches.cache_type = CacheAdvance::RailsCache
|
8
|
+
|
4
9
|
require 'config/caches'
|
5
10
|
require 'dispatcher'
|
6
11
|
|
@@ -15,11 +20,7 @@ end
|
|
15
20
|
|
16
21
|
# This will get called after the standard rails environment is initialized.
|
17
22
|
config.after_initialize do
|
18
|
-
|
19
|
-
# Setup the sweeper_type and cache as appropriate for Rails.
|
20
|
-
CacheAdvance::Caches.sweeper_type = CacheAdvance::ActiveRecordSweeper
|
21
|
-
CacheAdvance::Caches.cache = CacheAdvance::RailsCache.new
|
22
|
-
|
23
|
+
|
23
24
|
# This hooks the sweepers into the observer system and adds it to the list.
|
24
25
|
CacheAdvance::Caches.create_sweepers
|
25
26
|
ActiveRecord::Base.observers << CacheAdvance::ActiveRecordSweeper
|