Module: DRb::DRbServer::InvokeMethod18Mixin

Included in:
InvokeMethod
Defined in:
lib/drb/invokemethod.rb

Instance Method Summary collapse

Instance Method Details

#block_yield(x) ⇒ Object


7
8
9
10
11
12
# File 'lib/drb/invokemethod.rb', line 7

def block_yield(x)
  if x.size == 1 && x[0].class == Array
    x[0] = DRbArray.new(x[0])
  end
  @block.call(*x)
end

#perform_with_blockObject


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/drb/invokemethod.rb', line 14

def perform_with_block
  @obj.__send__(@msg_id, *@argv) do |*x|
    jump_error = nil
    begin
      block_value = block_yield(x)
    rescue LocalJumpError
      jump_error = $!
    end
    if jump_error
      case jump_error.reason
      when :break
        break(jump_error.exit_value)
      else
        raise jump_error
      end
    end
    block_value
  end
end