My irbrc

Introduction

Every single day (I open my computer) I use a Ruby REPL. And since irb was gemified it is moving forward fast and getting better and better.

I am trying to invest some time to get used to it and make it more useful for me. Out of the box it provides a great experience. At some point I might write about the things I use or appreciate the most. For example, the Don’t echo an expression’s result when it ends with a semicolon that is extremly useful when querying something that might return thousands of records (ie: User.where(stauts: :active)).

The file

begin
  require "rubygems"

  gems = %w[
    amazing_print
  ]

  if defined?(Rails)
    require "bundler/inline"

    gemfile(true) do
      source "https://rubygems.org"
      gems.each do |gem_name|
        gem gem_name
      end
    end

  else
    gems.each do |gem_name|
      next if Gem::Specification.find_all_by_name(gem_name).any?

      system("gem install #{gem_name}")
    end
  end

  require "amazing_print"

  IRB.conf[:PROMPT_MODE] = :SIMPLE
  IRB.conf[:AUTO_INDENT] = true

  AmazingPrint.defaults = {
    indent: 2,
    sort_keys: true,
  }

  AmazingPrint.irb!

rescue LoadError => e
  puts "Error loading console: #{e}"
end

What it does

As I mentioned, I like irb as it is. But I like it even more with amazing_print.

So, on initialization it checks whether irb is running inside a Rails application or not. If it is, it uses bundler/inline to install the gem. This way I do not have to add it to the Gemfile of projects where I work with other people. If it is not running inside a Rails application, it installs the gem using gem install.

After that, it requires amazing_print, sets some defaults for it and initializes it.

Pretty simple, but it makes my day a little bit better.