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

Version Path
ngmoco-cache-money-0.2.24.2 lib/cash/transactional.rb
sreeix-cache-money-0.4.4 lib/cash/transactional.rb
sreeix-cache-money-0.4.3 lib/cash/transactional.rb
sreeix-cache-money-0.4.2 lib/cash/transactional.rb
sreeix-cache-money-0.4.1 lib/cash/transactional.rb
viximo-cache-money-0.3.0 lib/cash/transactional.rb
sreeix-cache-money-0.2.27 lib/cash/transactional.rb
sreeix-cache-money-0.2.26 lib/cash/transactional.rb
sreeix-cache-money-0.2.25 lib/cash/transactional.rb
sreeix-cache-money-0.2.24.1 lib/cash/transactional.rb
timchen-cache-money-0.2.25.1 lib/cash/transactional.rb
ngmoco-cache-money-0.2.23 lib/cash/transactional.rb
ngmoco-cache-money-0.2.22 lib/cash/transactional.rb
ngmoco-cache-money-0.2.21 lib/cash/transactional.rb
ngmoco-cache-money-0.2.20 lib/cash/transactional.rb
artemk-cache-money-0.2.14 lib/cash/transactional.rb
artemk-cache-money-0.2.13.2 lib/cash/transactional.rb
ngmoco-cache-money-0.2.16 lib/cash/transactional.rb
ngmoco-cache-money-0.2.15 lib/cash/transactional.rb
ngmoco-cache-money-0.2.14 lib/cash/transactional.rb