Search code examples
rubybindingirb

IRB: exit a changed binding (`cb`) without exiting entire IRB session?


In an IRB session, I can use cb (change binding) to enter an object, but how do I get out? If I use exit it exits the entire IRB session.

$ irb
❯ o = Object.new
=> #<Object:0x007fc8a32258a8>
❯ cb(o)
=> #<Object:0x007fc8a32258a8>
❯ self
=> #<Object:0x007fc8a32258a8>
❯ exit
$

For that matter, how do I continue navigating objects once I've started? I've found I can access the cb method from whichever object I'm in by first extending IRB::ExtendCommandBundle, but is there a less tedious way?


Solution

  • Your best bet might be to use pry instead. It's a very powerful debugger that can also be used for most of the things irb is used for. I use it for inspecting my code and objects in rails apps.

    https://github.com/pry/pry

    Get it with gem install pry

    Then you can do this:

    $ pry
    [1] pry(main)> cd ""
    [2] pry(""):1> self
    => ""
    [3] pry(""):1> exit
    => ""
    [4] pry(main)> exit
    $
    

    Along with much, much more.