Reputation: 2977
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.
Upvotes: 87
Views: 25940
Reputation: 232
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.
Upvotes: 1
Reputation: 10892
I'm on OSX, ruby2.3.0, rails5. Adding gem 'rb-readline'
to my Gemfile
fixed this problem.
Upvotes: 26
Reputation: 5348
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)
Upvotes: 57
Reputation: 3470
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
Upvotes: 276
Reputation: 285
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!
Upvotes: 8
Reputation: 1242
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.
Upvotes: 20
Reputation: 16226
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.
Upvotes: 20