# Aboout DRb

**URL:** <https://www.ruby-forum.com/t/aboout-drb/171220>\
**Category:** Ruby\
**Created:** [June 29, 2009, 3:05am UTC](https://www.ruby-forum.com/t/aboout-drb/171220 "2009-06-29T03:05:02Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [June 29, 2009, 3:05am UTC](https://www.ruby-forum.com/t/aboout-drb/171220/1 "2009-06-29T03:05:02Z")

</div>

Hi. all

quick question 🙂

I received a drb object from an another process.

let me see an example.

sender class)

A class)  
…  
def return  
ret = output.new(self)  
…  
ret  
end

B class)  
@@buffer  
def buffer(buf)  
@@buffer \<\< buf  
end

def send  
DRb.start\_service(nil, self)  
…  
DRb.stop\_service  
end

def wait\_ret  
@@buffer  
end

receiver class)

DRb.start\_service  
…

tObj = DRbObject.new(nil, uri)

buffer = tObj.wait\_ret

STDOUT.write buffer

DRb.stop\_service

in this code,

when i write buffer in stdout, it is appeared by sequences of output  
class.  
but, when i puts buffer in stdout, it is appeared always by sequences  
of DRb::unknown or DRb::Object.

I cannot call methods of buffer class(this is an instance of output  
class).

could you give me hints to understand this situation?

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [June 29, 2009, 3:09am UTC](https://www.ruby-forum.com/t/aboout-drb/171220/2 "2009-06-29T03:09:08Z")

</div>

code should be like this . 😉

sender class)

A class)  
…  
def return  
ret = output.new(self)  
…  
B.buffer(ret)  
end

B class)  
@@buffer  
def self.buffer(buf)  
@@buffer \<\< buf  
end

def send  
DRb.start\_service(nil, self)  
…  
DRb.stop\_service  
end

…

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [June 29, 2009, 3:19am UTC](https://www.ruby-forum.com/t/aboout-drb/171220/3 "2009-06-29T03:19:39Z")

</div>

Jun Y. Kim wrote:

> end  
> …  
> DRb.stop\_service  
> end
> 
> …

return is a keyword, it is returning after def.

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [June 29, 2009, 3:25am UTC](https://www.ruby-forum.com/t/aboout-drb/171220/4 "2009-06-29T03:25:33Z")

</div>

Ammar A. wrote:

> > B.buffer(ret)  
> > DRb.start\_service(nil, self)

Never mind that. Completely wrong. Sorry.

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [June 29, 2009, 3:44am UTC](https://www.ruby-forum.com/t/aboout-drb/171220/5 "2009-06-29T03:44:16Z")

</div>

please, skip the syntaxes. I rewrite codes to explain about my problem  
simply. 🙂

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [June 29, 2009, 4:25am UTC](https://www.ruby-forum.com/t/aboout-drb/171220/6 "2009-06-29T04:25:56Z")

</div>

I got the answer 🙂

we should defined output class both of classes (server and client).

If we didn’t defined it in both of them, the same case will be happen.

The another way to solve this problem is using DrbUndumped.

When you specify this this in output class like

class output  
include DRbUndumped

…  
end

you can receive the instances of class normally.

🙂 anyway, I hope the other person solve this problem easily.

1. 
  1. 29, ¿ÀÀü 10:04, Jun Y. Kim ÀÛ¼º:
