Sha256: 8c9fa21f682305b53315c836c1e781fdb118e9b56f4f682455afbe465e58d5b6

Contents?: true

Size: 598 Bytes

Versions: 3

Compression:

Stored size: 598 Bytes

Contents

module Rdbc
  class Decorator
    def initialize(object, contract)
      @object = object
      @contract = contract
    end

    def method_missing(method, *args)
      object_pre = @object.clone
      @contract.send_method_pre(method, @object, *args)
      exception = nil
      begin
        result = @object.send(method, *args)
      rescue => exception
      end
      @contract.send_invariant(@object)
      @contract.send_method_post(method, object_pre, @object, exception, result, *args)
      if exception.nil?
        result
      else
        raise exception
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
armin-joellenbeck-rdbc-0.2.3 lib/rdbc/decorator.rb
armin-joellenbeck-rdbc-0.2.4 lib/rdbc/decorator.rb
armin-joellenbeck-rdbc-0.2.5 lib/rdbc/decorator.rb