> I don't know anything about pstore, but I do use DRb a lot,
> so I might be
> able to help partly.

I had some trouble understanding your solution, so I will attempt to explain
how PStore works and what the exact problem is. PStore is just a set of
marshalled objects on the server's local disk. To store the objects on disk,
just create the pstore

require "pstore"

store = PStore.new("test.db")
store.transaction do
	store["objects"] = object_list	# where object_list is the array of objects
in the database
end

When I do that however foo can't be dumped because its _dump function has
been replaced by a function that raises a TypeError exception (and produces
the following output).

d:/a/ruby180/lib/ruby/site_ruby/1.8/drb/drb.rb:27:in `_dump': can't dump
(TypeError)
        from d:/a/ruby180/lib/ruby/1.8/pstore.rb:120:in `dump'
        from d:/a/ruby180/lib/ruby/1.8/pstore.rb:120:in `transaction'
        from d:/projects/ruby/lib/obdb/ObjectDatabase.rb:154:in `save'
        from fxobjectdatabase.rb:116

Now it seems that the DRbUndumped include which allows the DRb to generate a
proxy object (a DRbObject) on the client doesn't do anything else other than
act as a marker to allow DRb to know to use a proxy object. In
DRbMessage.dump (below)

    def dump(obj)
      obj = DRbObject.new(obj) if obj.kind_of? DRbUndumped
      begin
	str = Marshal::dump(obj)
      rescue
	str = Marshal::dump(DRbObject.new(obj))
      end
      [str.size].pack('N') + str
    end

is the only reference to DRbUndumped. So I figured if I just didn't redefine
_dump in the DRbUndumped module, it could still see the object needed to be
proxied, but dump would still work. However that didn't work. Now I could
Marshal the object to disk but proxying  on the client stopped working.

In essence, what I want to be able to do is create an object on the server
and be able to :

1. Save it to disk (via Marshal)
2. Allow DRb to proxy it on the client, so that the client can modify it.

It doesn't seem like too much to ask, but I don't understand DRb well enough
to make it happen....yet... ;-)

Steve Tuckner