Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[ANN] Roxy 0.1 - Remote Proxy Objects w/ type & method signature impersonation and w/ remote block yields.

1 view
Skip to first unread message

Jeff Wood

unread,
Oct 17, 2005, 11:03:59 AM10/17/05
to
Hey folks.

I know a number of people are/were interested in this.

I've just requested the rubyforge project for Roxy.

If you've watched the ruby-talk mailing list over the past few weeks,
I've been having a discussion with a number of people about
implementing clean proxy objects. Ones that don't hide the signatures
of the objects they are meant to impersonate.

Anyways, I've built what I believe is version 0.1 of the project. It
even works with blocks (see the snippets below). And, since the object
impersonates the remote, irb's auto-completion works for remote
objects.

So, as soon as the rubyforge folks validate the project, I will get
things posted for all to help make even better.

.. until then, I'll simply wet your appetite with the following:

-- SCRIPT: server.rb --

require 'roxy'

my_array = [ 1, 2, 3, 4, 5 ]
server = RoxyServer.new( "hostname", 4242, my_array )
trap( "INT" ) { server.stop_server }
server.start_server.join

-- END: SCRIPT --

-- SCRIPT: client.rb --

require 'roxy'

obj = Roxy.new( "hostname", 4242 )
obj.class #=> Array
obj.methods # returns list of Array instance methods
obj.map { |c| c*2 } #=> [ 2, 4, 6, 8, 10 ]

-- END: SCRIPT --

Let me know what you think. I'm getting things posted as quickly as possible.

Additional features I plan to implement include allowing for ANY
Socket object to act as medium for communication, that way people can
override it with whatever protocols they would like to use.

A known limitation is that ONLY the first call of a chain (
obj.call.call.call ) will be executed remotely, the rest will be
executed locally on the result values.

So, until I get the project posted... please let me know and I can
send you one by hand.

Again, your feedback is very much appreciated.

j.

--
"http://ruby-lang.org -- do you ruby?"
Jeff Wood


Tom Copeland

unread,
Oct 17, 2005, 11:12:07 AM10/17/05
to
On Tue, 2005-10-18 at 00:03 +0900, Jeff Wood wrote:
> So, as soon as the rubyforge folks validate the project, I will get
> things posted for all to help make even better.

Done :-)

Yours,

Tom


Jeff Wood

unread,
Oct 17, 2005, 11:34:25 AM10/17/05
to
Alright, it's posted. News hasn't shown up on the Rubyforge homepage,
but that's okay =)

j.

Tom Copeland

unread,
Oct 17, 2005, 11:41:29 AM10/17/05
to
On Tue, 2005-10-18 at 00:34 +0900, Jeff Wood wrote:
> Alright, it's posted. News hasn't shown up on the Rubyforge homepage,
> but that's okay =)

Yup, Tim Sutherland is currently serving as the RubyForge newscaster:

http://rubyforge.org/credits/

I think he checks pending news postings once every day or so...

Yours,

Tom


Jeff Wood

unread,
Oct 17, 2005, 11:48:50 AM10/17/05
to
groovy, thanks.

j.

On 10/17/05, Tom Copeland <t...@infoether.com> wrote:

Ed Howland

unread,
Oct 17, 2005, 5:49:59 PM10/17/05
to
On 10/17/05, Jeff Wood <jeff.da...@gmail.com> wrote:
> groovy, thanks.
>
> j.
>

Now all we need is an ORB!

Ed


Neville Burnell

unread,
Oct 17, 2005, 7:55:46 PM10/17/05
to
Or a ruby version of JNDI

Eric Hodel

unread,
Oct 17, 2005, 11:42:34 PM10/17/05
to
On Oct 17, 2005, at 8:03 AM, Jeff Wood wrote:

> Hey folks.
>
> I know a number of people are/were interested in this.
>
> I've just requested the rubyforge project for Roxy.
>
> If you've watched the ruby-talk mailing list over the past few weeks,
> I've been having a discussion with a number of people about
> implementing clean proxy objects. Ones that don't hide the signatures
> of the objects they are meant to impersonate.
>
> Anyways, I've built what I believe is version 0.1 of the project. It
> even works with blocks (see the snippets below). And, since the object
> impersonates the remote, irb's auto-completion works for remote
> objects.
>
> So, as soon as the rubyforge folks validate the project, I will get
> things posted for all to help make even better.
>

> ... until then, I'll simply wet your appetite with the following:


>
> -- SCRIPT: server.rb --
>
> require 'roxy'
>
> my_array = [ 1, 2, 3, 4, 5 ]
> server = RoxyServer.new( "hostname", 4242, my_array )
> trap( "INT" ) { server.stop_server }
> server.start_server.join
>
> -- END: SCRIPT --
>
> -- SCRIPT: client.rb --
>
> require 'roxy'
>
> obj = Roxy.new( "hostname", 4242 )
> obj.class #=> Array
> obj.methods # returns list of Array instance methods
> obj.map { |c| c*2 } #=> [ 2, 4, 6, 8, 10 ]
>
> -- END: SCRIPT --
>
> Let me know what you think. I'm getting things posted as quickly as
> possible.

Roxy looks like it reimplements a significant portion of DRb. Have
you thought about making Roxy simply a DRb server? You'll save lots
of code and can get auto-discovery for free.

> Additional features I plan to implement include allowing for ANY
> Socket object to act as medium for communication, that way people can
> override it with whatever protocols they would like to use.

DRb gives you this for free :)

> A known limitation is that ONLY the first call of a chain (
> obj.call.call.call ) will be executed remotely, the rest will be
> executed locally on the result values.

With DRb you can (supposing each #call returns obj) keep all calls
remote through DRb::DRbUndumped.

--
Eric Hodel - drb...@segment7.net - http://segment7.net
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

Jeff Wood

unread,
Oct 18, 2005, 2:51:03 AM10/18/05
to
Eric,
I know that DRb currently supports features I don't. My goal is to have
them.
There are "features" of DRb that I don't like. So, this is my replacement
project.
j.

0 new messages