Cannot execute "rails console" due to an error with readline
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.
Solution 1:
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:
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)