Sha256: 64532f18c755b4a737e34cdb72c41852c6568805a30d92aa21af66a978e02427
Contents?: true
Size: 794 Bytes
Versions: 26
Compression:
Stored size: 794 Bytes
Contents
module Cash class Transactional attr_reader :memcache def initialize(memcache, lock) @memcache, @cache = [memcache, memcache] @lock = lock end def transaction exception_was_raised = false begin_transaction result = yield rescue Object => e exception_was_raised = true raise ensure begin @cache.flush unless exception_was_raised ensure end_transaction end end def respond_to?(method) @cache.respond_to?(method) end private def method_missing(method, *args, &block) @cache.send(method, *args, &block) end def begin_transaction @cache = Buffered.push(@cache, @lock) end def end_transaction @cache = @cache.pop end end end
Version data entries
26 entries across 26 versions & 9 rubygems