Skip to content

Instantly share code, notes, and snippets.

@jsvnm
Created November 24, 2011 08:24
Show Gist options
  • Save jsvnm/1390890 to your computer and use it in GitHub Desktop.
Save jsvnm/1390890 to your computer and use it in GitHub Desktop.
making pry work with inf-ruby
(add-to-list 'inf-ruby-implementations '("pry" . "pry"))
(setq inf-ruby-default-implementation "pry")
(setq inf-ruby-first-prompt-pattern "^\\[[0-9]+\\] pry\\((.*)\\)> *")
(setq inf-ruby-prompt-pattern "^\\[[0-9]+\\] pry\\((.*)\\)[>*\"'] *")
@iamdionysus
Copy link

At least from my experience and set up, this is not a proper way to make pry work under emacs 24.3 and current inf-ruby with MEPLA installation. Since this gist shows up quite high in google search result, I'd like to comment here what was the problem and how I solved it.

Issues

  • (add-to-list 'inf-ruby-implementations '("pry" . "pry")) causes init.el load error. It's already implemented in the inf-ruby.el source so I don't think it's necessary to add again.
  • (setq inf-ruby-default-implementation "pry") actually makes inf-ruby run the pry. However, with flaws. If pry is running with this set up and if I send the buffer/region/block, I get NameError: uninitialized constant IRB from (pry):1:in pry_'`. Again, I looked into the inf-ruby.el source code and it looks like inf-ruby is already taking care of the pry smartly. So this set up shouldn't be added to init.el as well.

Solution

  • don't add anything which is mentioned above to init.el to make pry work especially if it's installed from MELPA

  • Instead, set pry as default irb by

    • create ~/.irbrc if you don't have one
    • add this
    require 'pry'
    Pry.start
    exit

@dgutov
Copy link

dgutov commented Dec 16, 2015

Because somebody linked to this today:

The problem with "uninitialized constant IRB" has been fixed more than a year ago: nonsequitur/inf-ruby#64

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment