Sha256: ade51ecf028e4dadd42f1a7a4a974dcafa2a1b35f387b884482910119092da35
Contents?: true
Size: 813 Bytes
Versions: 7
Compression:
Stored size: 813 Bytes
Contents
module Trice class Repository def initialize @backend = ThreadLocalBackend.new('trice.reference_time'.freeze) end def reference_time=(time) unless time.nil? || time.acts_like?(:time) raise ArgumentError, "#{time.inspect} is not behave like time" end @backend.set(time) end def reference_time @backend.get || raise(NoReferenceTime) end def with_reference_time(time, &block) original = @backend.get begin self.reference_time = time yield time ensure self.reference_time = original end end end class ThreadLocalBackend def initialize(key) @key = key end def set(time) Thread.current[@key] = time end def get Thread.current[@key] end end end
Version data entries
7 entries across 7 versions & 1 rubygems