module Redwood::Singleton::ClassMethods
Public Instance Methods
deinstantiate!()
click to toggle source
# File lib/sup/util.rb, line 587 def deinstantiate!; @instance = nil; end
init(*args)
click to toggle source
# File lib/sup/util.rb, line 607 def init *args raise "there can be only one! (instance)" if instantiated? @instance = new(*args) end
instance()
click to toggle source
# File lib/sup/util.rb, line 585 def instance; @instance; end
instantiated?()
click to toggle source
# File lib/sup/util.rb, line 586 def instantiated?; defined?(@instance) && !@instance.nil?; end
method_missing(meth, *a, &b)
click to toggle source
# File lib/sup/util.rb, line 588 def method_missing meth, *a, &b raise "no #{name} instance defined in method call to #{meth}!" unless defined? @instance ## if we've been deinstantiated, just drop all calls. this is ## useful because threads that might be active during the ## cleanup process (e.g. polling) would otherwise have to ## special-case every call to a Singleton object return nil if @instance.nil? # Speed up further calls by defining a shortcut around method_missing if meth.to_s[-1,1] == '=' # Argh! Inconsistency! Setters do not work like all the other methods. class_eval "def self.#{meth}(a); @instance.send :#{meth}, a; end" else class_eval "def self.#{meth}(*a, &b); @instance.send :#{meth}, *a, &b; end" end @instance.send meth, *a, &b end