Sha256: 2b2b2babc4eb3a74b7b46e51f48fb78b38b35d58216d4b3766885598a5bf67ba

Contents?: true

Size: 698 Bytes

Versions: 1

Compression:

Stored size: 698 Bytes

Contents

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
drbproxy-0.1.0 lib/drbproxy/drbproxy_class.rb