module ActiveSupport::Testing::TimeHelpers

def travel_back

Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00

end
Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
travel_back do

Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
travel_to Time.zone.local(2004, 11, 24, 1, 4, 44)

Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00

This method also accepts a block, which brings the stubs back at the end of the block:

Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
travel_back

Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
travel_to Time.zone.local(2004, 11, 24, 1, 4, 44)

Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00

+travel+, +travel_to+, and +freeze_time+.
Returns the current time back to its original state, by removing the stubs added by
def travel_back
  stubbed_time = Time.current if block_given? && simple_stubs.stubbed?
  simple_stubs.unstub_all!
  yield if block_given?
ensure
  travel_to stubbed_time if stubbed_time
end