Class: Trice::Repository

Inherits:
Object
  • Object
show all
Defined in:
lib/trice/repository.rb

Instance Method Summary collapse

Constructor Details

#initializeRepository

Returns a new instance of Repository.



3
4
5
# File 'lib/trice/repository.rb', line 3

def initialize
  @backend = ThreadLocalBackend.new('trice.reference_time'.freeze)
end

Instance Method Details

#reference_timeObject



14
15
16
# File 'lib/trice/repository.rb', line 14

def reference_time
  @backend.get || raise(NoReferenceTime)
end

#reference_time=(time) ⇒ Object



7
8
9
10
11
12
# File 'lib/trice/repository.rb', line 7

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

#with_reference_time(time, &block) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/trice/repository.rb', line 18

def with_reference_time(time, &block)
  original = @backend.get

  begin
    self.reference_time = time
    yield time
  ensure
    self.reference_time = original
  end
end