lib/autobots/helpers/caching.rb in autobots-0.1.0 vs lib/autobots/helpers/caching.rb in autobots-0.2.0
- old
+ new
@@ -1,26 +1,34 @@
module Autobots
module Helpers
module Caching
+ extend ActiveSupport::Concern
+
def initialize(_, options = {})
super
- @cache = options[:cache]
+ self.cache = options[:cache] if options.has_key?(:cache)
end
+ def self.prepended(klass)
+ klass.class_eval do
+ class_attribute :cache
+ end
+ end
+
def data
return @data if defined?(@data)
- if @cache
+ if cache
key_proc = options.fetch(:cache_key) do
method(:cache_key)
end
identifiers = objects.inject({}) do |acc, obj|
acc[key_proc.call(obj, self)] = obj
acc
end
# misses: { key => obj }
- @data = BulkCacheFetcher.new(@cache).fetch(identifiers) do |misses|
+ @data = BulkCacheFetcher.new(cache).fetch(identifiers) do |misses|
roll_out(misses.values)
end
else
@data = super
end
\ No newline at end of file