The instantiation pipeline element that enforces the singleton multiplicity.
Methods
Public Instance methods
Returns the cached reference, if it has been previously cached. Otherwise, invokes the next element in the pipeline and caches the result. The cached reference is returned.
[ show source ]
# File lib/needle/lifecycle/singleton.rb, line 38
38: def call( container, point )
39: unless @is_cached
40: @mutex.synchronize do
41: unless @is_cached
42: @cached = succ.call( container, point )
43: @is_cached = true
44: end
45: end
46: end
47:
48: @cached
49: end
Creates the mutex to use and sets the cached reference to nil.
[ show source ]
# File lib/needle/lifecycle/singleton.rb, line 29
29: def initialize_element
30: @mutex = QueryableMutex.new
31: @cached = nil
32: @is_cached = false
33: end
Resets the cached singleton instance, so that the next time it is requested it is re-constructed.
[ show source ]
# File lib/needle/lifecycle/singleton.rb, line 53
53: def reset!
54: @mutex.synchronize do
55: @cached = nil
56: @is_cached = false
57: end
58: end