module RecordCache::MultiRead
Public Class Methods
disable(klass)
click to toggle source
Disable multi_read for a particular Store, e.g.
RecordCache::MultiRead.disable(ActiveSupport::Cache::DalliStore)
# File lib/record_cache/multi_read.rb, line 20 def disable(klass) @disabled_klass_names << klass.name end
test(store)
click to toggle source
Test
the store if it supports read_multi calls If not, delegate multi_read calls to normal read calls
# File lib/record_cache/multi_read.rb, line 26 def test(store) return store if @tested.include?(store) @tested << store override_read_multi(store) unless read_multi_supported?(store) store end
Private Class Methods
override_read_multi(store)
click to toggle source
delegate read_multi to normal read calls
# File lib/record_cache/multi_read.rb, line 46 def override_read_multi(store) def store.read_multi(*keys) keys.inject({}){ |h,key| h[key] = self.read(key); h} end end
read_multi_supported?(store)
click to toggle source
# File lib/record_cache/multi_read.rb, line 35 def read_multi_supported?(store) return false if @disabled_klass_names.include?(store.class.name) begin store.read_multi('a', 'b') true rescue Exception => ignore false end end