class Wireless::Resolver::Singleton
A dependency resolver which only runs its block the first time the value is read. On subsequent reads, the cached value is returned.
Public Class Methods
new(block)
click to toggle source
Calls superclass method
Wireless::Resolver::new
# File lib/wireless/resolver/singleton.rb, line 8 def initialize(block) super(block) @lock = Mutex.new @seen = false @value = nil end
Public Instance Methods
resolve(fetcher)
click to toggle source
Resolve the dependency once. On subsequent calls, return the cached version.
# File lib/wireless/resolver/singleton.rb, line 17 def resolve(fetcher) @lock.synchronize do unless @seen @value = @block.call(fetcher.call) @seen = true end @value end end