Practical Sorcery with irb
When you run irb, the Ruby REPL, it loads the Ruby script at ~/.irbrc, if it exists. My .irbrc file has gotten kind of big lately, and the tricks it adds to my shell are great, so I thought I’d pull it apart and show you the magic inside.
Includes and setup
require 'pp' require 'rubygems' # wirble is amazing require 'wirble' Wirble.init Wirble.colorize IRB.conf[:AUTO_INDENT] = true
This stuff is all pretty trivial, but incredibly useful. pp is a library that comes with Ruby that prints out nested hashes and arrays in a readable format with indentation. Requiring rubygems up front almost always saves you a line of code. It also lets you require the gem wirble, which gives you cross-session history, colored output, and auto-completion.
IRB.conf[:AUTO_INDENT] = true does exactly what it sounds like: when you write code that would normally have an indent after it, like the beginning of a block, irb indents the next line.
class Object
# get all the methods for an object that aren't basic methods from Object
def my_methods
(methods - Object.instance_methods).sort
end
end
When I need to look up methods on an object, I’m always bombarded with a mess of methods on Object. This just gets rid of them for me.
# from http://themomorohoax.com/2009/03/27/irb-tip-load-files-faster
def ls
%x{ls}.split("\n")
end
def cd(dir)
Dir.chdir(dir)
Dir.pwd
end
def pwd
Dir.pwd
end
ls is copied from a person who has the same problem as me: always typing ls inside irb. This just makes that work. I figured as long as I was doing that, I might as well implement the shell commands cd and pwd.
# also from http://themomorohoax.com/2009/03/27/irb-tip-load-files-faster
def rl(file_name = nil)
if file_name.nil?
if !@recent.nil?
rl(@recent)
else
puts "No recent file to reload"
end
else
file_name += '.rb' unless file_name =~ /\.rb/
@recent = file_name
load "#{file_name}"
end
end
This is some slick magic to help you reload Ruby code inside irb. Normally, you can re-read a file with load "<filename>.rb", which works well, but is a lot to type over and over. rl lets you just type rl "<filename>", and once you’ve called it once, you can just type rl to reload the same file again.
alias p pp alias quit exit
Finally, I dropped two aliases into .irbrc. pp is so great that I prefer to use it over p, and I have an inability to remember to type exit instead of quit, so I just fixed that.
You can find the entire .irbrc file at http://gist.github.com/86875. If you have any irb tips of your own, let us know in the comments!

Recent Comments
Your post has made me think!
We people get used to that what we daily do. And normally we forget that we have to evolve.