How to install pry/pry-rails globally for all projects?

1k views Asked by At

How can replace irb and rails console with pry/pry-console globally for every project without having to include it in a project?

1

There are 1 answers

1
matthewd On

Easy mode is to hack your .irbrc, so that when anything tries to load IRB, you take over and force it to load Pry instead:

begin
  gem "pry"
rescue => ex
  $stderr.puts ex.message
else
  require "pry"
  Pry.start
  exit!
end

If you're using Bundler, however, that'll still only work if Pry is available in the current bundle.


To make it work even when Bundler doesn't think Pry should be allowed to activate, you'll need to monkey with gem loading -- Bundler tries very hard to make it impossible.

To do that, you'll need a ~/.rubyrc.rb file, which you ensure always gets loaded for all ruby commands by exporting RUBYOPT=$HOME/.rubyrc in your .bashrc / .zshrc.

That file can then hack into Bundler's internals to force loading a non-bundled gem. You can also monkey-patch Bundler.require, which is how Rails loads all the gems in the Gemfile, to similarly force pry-rails in any application that contains rails.

(This strategy also allows you to globally support binding.pry, without needing to explicitly require anything, or add the gem to the project.)