Method: Timecop#travel

Defined in:
lib/timecop/timecop.rb

#travel(mock_type, *args, &block) ⇒ Object

:nodoc:

Raises:



213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
# File 'lib/timecop/timecop.rb', line 213

def travel(mock_type, *args, &block) #:nodoc:
  raise SafeModeException if Timecop.safe_mode? && !block_given? && !@safe

  stack_item = TimeStackItem.new(mock_type, *args)

  stack_backup = stack.dup
  stack << stack_item

  if block_given?
    safe_backup = @safe
    @safe = true
    begin
      yield stack_item.time
    ensure
      stack.replace stack_backup
      @safe = safe_backup
    end
  end
end