module Cult::SingletonInstances::ClassMethods

Public Instance Methods

new(*args) click to toggle source
Calls superclass method
# File lib/cult/singleton_instances.rb, line 23
def new(*args)
  return super unless Cult.singletons?

  if (result = cache_get(self, *args))
    return result
  end

  super.tap do |result|
    cache_put(result, *args)
  end
end

Private Instance Methods

cache_get(cls, *args) click to toggle source
# File lib/cult/singleton_instances.rb, line 12
def cache_get(cls, *args)
  singletons[[cls, *args]]
end
cache_put(obj, *args) click to toggle source
# File lib/cult/singleton_instances.rb, line 17
def cache_put(obj, *args)
  singletons[[obj.class, *args]] = obj
end
singletons() click to toggle source
# File lib/cult/singleton_instances.rb, line 7
def singletons
  @singletons ||= {}
end