1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
# Delorean [](http://travis-ci.org/bebanjo/delorean)
Delorean lets you travel in time with Ruby by mocking `Time.now`

> Marty:: Wait a minute, Doc. Ah... Are you telling me that you built a time machine... out of a DeLorean?
>
> Doc:: The way I see it, if you're gonna build a time machine into a car, why not do it with some style?
## Install
$ [sudo] gem install delorean
Or add it to your `Gemfile`, etc.
## Usage
Let's travel in time!
require 'delorean'
# Date.today => Wed Feb 24
Delorean.time_travel_to "1 month ago" # Date.today => Sun Jan 24
Delorean.back_to_the_present # Date.today => Wed Feb 24
With a block:
Delorean.time_travel_to("1 month ago") do
# Inside the block, Time.now => Sun Jan 24 00:34:32 +0100 2010
sleep(5)
# And the time still goes by... Time.now => Sun Jan 24 00:34:37 +0100 2010
end
# Outside the block, Time.now => Wed Feb 24 00:34:35 +0100 2010
You can also `jump` which is like `sleep` but without losing time
# Time.now => Wed Feb 24 00:34:04 +0100 2010
Delorean.jump 30
# Time.now => Wed Feb 24 00:34:34 +0100 2010
## Testing
Time-travelling can be extremely useful when you're testing your application.
For example, in RSpec you may find convenient to include Delorean's DSL in your `spec_helper.rb`:
RSpec.configure do |config|
config.include Delorean
...
Now you can time-travel in your examples, like this:
it "should show latest created user" do
time_travel_to(3.minutes.ago) { create_user :name => "John" }
time_travel_to(5.minutes.ago) { create_user :name => "Chris" }
get 'show'
response.should have_text("John")
response.should_not have_text("Chris")
end
Don't forget to go back to the present after each example:
after(:each) { back_to_the_present }
or its alternate syntax:
after(:each) { back_to_1985 }
## Credits
Delorean image based on [an original](http://www.gocarlo.com/lagalerie/archives/march05.htm) by [Giancarlo Pitocco](http://www.gocarlo.com/).
Copyright (c) 2012 Luismi Cavallé, Sergio Gil and BeBanjo S.L. released under the MIT license
|