module Stub::Abstract::Methods

Public Instance Methods

__wrap__(object, *context) click to toggle source
# File lib/stub/abstract.rb, line 41
def __wrap__ object, *context
        @stub_class.new object
end
method_missing(method_name, *args, &block) click to toggle source
# File lib/stub/abstract.rb, line 22
def method_missing method_name, *args, &block
        result = @object.send method_name, *args, &block

        method_name = args.shift if [ :send, :__send__ ].include? method_name

        case result
        when nil
                raise
        when true, false, String, Numeric, Array, Hash
                result
        else
                __wrap__ result, method_name, *args, &block
        end
rescue => e
        $stderr.puts "#{e.class}: #{e.message} in #{@object.class}##{method_name}(#{args.map(&:inspect)*','})" if e.message.present?

        __stub__ method_name, *args, &block
end