I’ve only just got around to playing with ruby 2.4.0 which was released in late 2016. One of the new features of the language is introduced was Binding.irb .

Binding.irb allows you to pause execution of a script and play about in an irb session. This brings some of the features that people had to use something like Pry for before into Ruby.

Depending on the article you read some folk will start talking about Binding.irb with a code sample with require 'irb' at the top and others won’t.

I wanted to very quickly clear this up.

The irb functionality in Ruby is baked into the language, but just like other classes (the CSV class, for example) you need to require it should you want to use it.

This means if we want to run our script by typing ruby my_script.rb we will need to have a require 'irb' .

If however we are running our script from inside an irb session already, then we don’t need to include it. Ruby when executed from inside an irb session already loads in the relevant classes.

A note about running Binding.irb from inside IRB

If your script is being ran inside of irb , for example by running irb -r './my_sript.rb' when you hit Binding.irb it will pause execution and effectively open up an irb session inside your irb session.

This means if you type exit you are only exiting the session generated by Binding.irb , not your own session.