# pry-timetravel

Time travel! For your REPL!

    > x = 5
    5
    > snap
    > x = 10
    10
    > back
    > x
    5

This is an attempt to package the proof of concept. API WILL CHANGE!

## How it works

The 'snap' command causes a fork, and the child is sent a SIGSTOP to freeze the
process. The parent continues on. Later when you do 'back' the saved child is
sent SIGCONT and the current process is sent a SIGSTOP. Ultimately you can have
a whole pool of frozen snapshots and can resume any of them.

In theory copy-on-write semantics makes this a tollerable thing to do :)

There are a few more details, but that is the important bit.

WARNING: Time travel may cause zombies.

## Meta

Released under the MIT license, see LICENSE.MIT for details. License is
negotiable. Contributions and bug-reports are welcome!


# pry-timetravel

Time travel! For your REPL!

    > x = 5
    5
    > snap
    > x = 10
    10
    > back
    > x
    5

This is an attempt to package the proof of concept. API WILL CHANGE!

## How it works

The 'snap' command causes a fork, and the child is sent a SIGSTOP to freeze the
process. The parent continues on. Later when you do 'back' the saved child is
sent SIGCONT and the current process is sent a SIGSTOP. Ultimately you can have
a whole pool of frozen snapshots and can resume any of them.

In theory copy-on-write semantics makes this a tollerable thing to do :)

There are a few more details, but that is the important bit.

WARNING: Time travel may cause zombies.

## KNOWN ISSUES

### Redis fork detection

Redis checks to see if you forked and yells at you about needing to reconnect.
Reasonably so, as it is a crazy idea to use the same connection in forked
children! But we are doing crazy things. In 3.1.0 the gem will auto-reconnect,
or you can pass inherit_socket to the connection to stop that. Or you can do
this to bypass safety measures:

    class Redis
      class Client
        def ensure_connected
          yield
        end
      end
    end

Maybe this will be a default hack that gets activated on your first snapshot at
some point in the near future.

## Meta

Released under the MIT license, see LICENSE.MIT for details. License is
negotiable. Contributions and bug-reports are welcome!


Add note about redis reconnect warning
Add note about redis reconnect warning
