Module: Zoidberg::Shell::ClassMethods

Defined in:
lib/zoidberg/shell.rb

Instance Method Summary collapse

Instance Method Details

#new(*args, &block) ⇒ Object

Override real instance’s .new method to provide a proxy instance



367
368
369
370
371
372
373
374
375
376
377
378
379
380
# File 'lib/zoidberg/shell.rb', line 367

def new(*args, &block)
  if(self.include?(Zoidberg::HardShell))
    proxy = Zoidberg::Proxy::Confined.new(self, *args, &block)
  elsif(self.include?(Zoidberg::SoftShell))
    proxy = Zoidberg::Proxy::Liberated.new(self, *args, &block)
  else
    raise TypeError.new "Unable to determine `Shell` type for this class `#{self}`!"
  end
  proxy._zoidberg_set_instance(self.unshelled_new(*args, &block))
  weak_ref = Zoidberg::WeakRef.new(proxy)
  Zoidberg::Proxy.register(weak_ref.__id__, proxy)
  ObjectSpace.define_finalizer(weak_ref, Zoidberg::Proxy.method(:scrub!))
  weak_ref
end

#trap_exit(m_name = nil) ⇒ String, Symbol

Trap unhandled exceptions from linked instances and handle via given method name

Parameters:

  • m_name (String, Symbol) (defaults to: nil)

    method handler name

Returns:

  • (String, Symbol)


387
388
389
390
391
392
# File 'lib/zoidberg/shell.rb', line 387

def trap_exit(m_name=nil)
  if(m_name)
    @m_name = m_name
  end
  @m_name
end