On Jul 11, 3:02 pm, Joel VanderWerf <v... / path.berkeley.edu> wrote:
> Nwallins wrote:
> > # file 1
> > require 'drb/drb'
> > require 'thread'
> > DRb.start_service("druby://:1234", Hash.new.extend(DRbUndumped))
> > DRb.thread.join
> > # EOF
>
> > # file 2
> > require 'drb/drb'
> > d = DRbObject.new_with_uri("druby://:1234")
> > d[0] = 'zero'
> > d[0] #=> "zero"
> > d[0].slice!(0, 1)
> > d[0] #=> "zero"
>
> > # file 3
> > h = Hash.new
> > h[0] = 'zero'
> > h[0].slice!(0, 1)
> > h[0] #=> "ero"
>
> > # how can I change the state of the distributed hash's values?
>
> Some options:
>
> 1. make the values DRbUndumped, too.
>
> 2. use non-destructive methods on the values:
>
>    d[0] = d[0].slice(0, 1)
>
> 3. define a method on your front object that handles everything at
> server side, so the client says this:
>
>    idx = 0
>    d.slice_at_index(idx,0,1)
>
> --
>        vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Joel,

thanks for the response.

(1) is not viable, as you cannot make objects or classes undumpable
from the client
(2) does not address the issue -- to mutate the value
(3) is interesting, but violates the architecture that my simplified
example is distilled from

I'm still wondering if the demonstrated behavior is a bug or a
feature.  I'm leaning towards the former ;)

- Rick