Cannot execute "rails console" due to an error with readline

Ruby on-RailsRubyRuby on-Rails-3HomebrewRbenv

Ruby on-Rails Problem Overview


I cannot execute rails console due to this error:

localhost:TwitterForZombies wiz$ rails c
/Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/irb/completion.rb:9:in `require': dlopen(/Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib (LoadError)
  Referenced from: /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle
  Reason: image not found - /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle
	from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/irb/completion.rb:9:in `<top (required)>'
	from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:3:in `require'
	from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:3:in `<top (required)>'
	from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:38:in `require'
	from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:38:in `<top (required)>'
	from script/rails:6:in `require'
	from script/rails:6:in `<main>'

I have installed readline via homebrew. I'd like to keep using rbenv instead of rvm.

Thank you for reading my question.

Ruby on-Rails Solutions


Solution 1 - Ruby on-Rails

I had the same issue recently with homebrew and libreadline.7.x.dylib / libreadline.6.x.dylib

I solved it by running:

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib

source: https://github.com/rails/rails/issues/26658

Solution 2 - Ruby on-Rails

Homebrew is great, but once in a while it doesn't play nice with some of the other moving parts.

A brew update && brew upgrade brought in libreadline.7.x.dylib while automatically removing libreadline.6.x.dylib, which ruby was still relying on.

There may be more clever ways to fix the problem, but brute force worked for me:

$ rbenv uninstall 2.3.1
$ rbenv install 2.3.1
$ cd /path/to/my/app
$ bundle

The above assumes the presence of rbenv's ruby-build and, of course, bundler; replace 2.3.1 with whatever version of ruby you are using.

Please note that similar problems can occur with different homebrew-managed libraries (see my own answer to this, for example)

Solution 3 - Ruby on-Rails

I'm on OSX, ruby2.3.0, rails5. Adding gem 'rb-readline' to my Gemfile fixed this problem.

Solution 4 - Ruby on-Rails

I got the same error with Ruby 2.1.0, and rails 4.0. After searching and trying a lot, finally it work well:) Here are what I did:

rvm cleanup all
rvm autolibs enable
rvm install 2.1.0 

The other ways:

brew update
brew uninstall readline
brew install readline

The autolibs command will force RVM install all dependencies, so you don't need to worry about it.

Hope it's helpful.

Solution 5 - Ruby on-Rails

As Sachin hinted, installing readline and then reinstalling ruby is the ideal approach - but the details are a bit different for rbenv. Given your file paths, I'm guessing you're on a Mac, so the following should help:

brew install readline ruby-build
env CONFIGURE_OPTS=--with-readline-dir=`brew --prefix readline` rbenv install 1.9.3-p286

This was taken from the ruby-build Wiki and a quick google search.

Solution 6 - Ruby on-Rails

Using mac, El Captain version, it is possible to fix just by doing

rvm reinstall your_ruby_version

(like rvm reinstall ruby-2.3.1)

Hope this helps, good luck!

Solution 7 - Ruby on-Rails

taken from github user @enderahmetyurt (this is the only solution that worked for me).

Solution: Add gem 'rb-readline' to your Gemfile in development group and bundle install.

It's the easiest solution for silly "readline" errors.

Solution 8 - Ruby on-Rails

> try installing readline, and reinstall your ruby > > https://rvm.io/packages/readline/

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionwizView Question on Stackoverflow
Solution 1 - Ruby on-RailsWill ClarkeView Answer on Stackoverflow
Solution 2 - Ruby on-RailsGiuseppeView Answer on Stackoverflow
Solution 3 - Ruby on-RailsMeekohiView Answer on Stackoverflow
Solution 4 - Ruby on-RailsHoa HoangView Answer on Stackoverflow
Solution 5 - Ruby on-RailspatView Answer on Stackoverflow
Solution 6 - Ruby on-RailsviolentrView Answer on Stackoverflow
Solution 7 - Ruby on-Railswhataboutme1View Answer on Stackoverflow
Solution 8 - Ruby on-RailsSachin SinghView Answer on Stackoverflow