Class: DRbProxy::DRbProxyClass

Inherits:
Object
  • Object
show all
Defined in:
lib/drbproxy/drbproxy_class.rb

Constant Summary collapse

@@proxy_server =
DRbObject.new_with_uri(DRbProxy::DRB_URI)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ DRbProxyClass

Returns a new instance of DRbProxyClass.



3
4
5
# File 'lib/drbproxy/drbproxy_class.rb', line 3

def initialize(*args)
  @object = @@proxy_server.new_object_for(self.class.to_s, *args)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(sym, *args, &block) ⇒ Object



7
8
9
# File 'lib/drbproxy/drbproxy_class.rb', line 7

def method_missing(sym, *args, &block)
  @object.send sym, *args, &block
end

Class Method Details

.const_missing(const_name) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/drbproxy/drbproxy_class.rb', line 16

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

.method_missing(sym, *args, &block) ⇒ Object



11
12
13
14
# File 'lib/drbproxy/drbproxy_class.rb', line 11

def self.method_missing(sym, *args, &block)
  klass = @@proxy_server.klass_for(self.to_s)
  klass.send sym, *args, &block
end