class DRbProxy::DRbProxyClass @@proxy_server = DRbObject.new_with_uri(DRbProxy::DRB_URI) def initialize(*args) @object = @@proxy_server.new_object_for(self.class.to_s, *args) end def method_missing(sym, *args, &block) @object.send sym, *args, &block end def self.method_missing(sym, *args, &block) klass = @@proxy_server.klass_for(self.to_s) klass.send sym, *args, &block end def self.const_missing(const_name) const = @@proxy_server.constant_for(self.to_s, const_name) if const.is_a? DRb::DRbUnknown self.module_eval("class #{const_name} < DRbProxy::DRbProxyClass; end") self.const_get(const_name) else const end end end