2008/1/8, Carlos J. Hernandez <carlosjhr64 / fastmail.fm>:
> Eric, thanks for your comment.
> I'll look again, but I don't think I saw in DRb the simplicity achieved
> by bash as in:
>
> cat source.txt | filter | sort > result.txt

That line makes you eligible for a "useless cat award".

> I'm saying cat, filter, and sort could be ruby programs piping Marshal
> data structures.

Your solution is still too complicated: you do not need the byte
transfer - in fact, it may be disadvantageous because you need the
full marshaled representation in memory before you can send it.  This
is not very nice for streaming processing.  Instead, simply directly
marshal data into the pipe:

$ ruby -e '10.times {|i| Marshal.dump(i, $stdout) }' | ruby -e 'until
$stdin.eof?; p Marshal.load($stdin) end'
0
1
2
3
4
5
6
7
8
9

The question is: how often do you actually need the processing power
of two processes?  On a single core machine the code is probably as
efficient with a single Ruby process (probably using multiple threads)
- and you do not need the piping complexity and marshaling overhead.
For tasks that involve IO Ruby threads work pretty well.  So, I'd be
interested to hear what is the use case for your solution?

Kind regards

robert

-- 
use.inject do |as, often| as.you_can - without end