nyarn.tech

にゃーん

rails consoleしてLibrary not loaded: libreadline.6.dylib (LoadError)が表示されるとき

環境

  • OSX (El Capitan)
  • ruby 2.3.1
  • rails5.0.1
  • Homebrew 1.1.5

とりあえず解決策

gem 'rb-readline' をGemfileに追加してbundle installしましょう

現象

rails5.0.1で rails console しました。
途中でこけてエラーメッセージが出たりするとよいのですが、何も反応が返ってこずコンソールにも何も表示されませんでした。
とりあえずこういうときはおもむろに bin/spring stop します。

そのあともう一度 rails c すると以下のエラーが出ました。(適宜パスは読み替えてください)

Running via Spring preloader in process XXXX
path/to/project/vendor/bundle/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require': dlopen(~/.anyenv/envs/rbenv/versions/2.3.1/lib/ruby/2.3.0/x86_64-darwin15/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib (LoadError)
Referenced from: ~/.anyenv/envs/rbenv/versions/2.3.1/lib/ruby/2.3.0/x86_64-darwin15/readline.bundle
Reason: image not found - ~/.anyenv/envs/rbenv/versions/2.3.1/lib/ruby/2.3.0/x86_64-darwin15/readline.bundle

なんだかreadlineの読み込みに失敗しているようですね。

brew info readline してみたのですがreadlineはインストールされています。
シンボリックリンク貼ったらいいのかなーと思ったのですが、違うマシンでもまたシンボリックリンク貼ったりを考えると面倒だなあと思って別の方法を模索しました。

解決策

readlineの代わりにPure Rubyで書かれたrb-readlineというgemを追加すれば解決します。
gem 'rb-readline' をdevelopmentに追加して bundle install したあとに bundle exec rails c してみると

Loading development environment (Rails 5.0.1)
irb(main):001:0>

わーい! Hello irb ? 解決です!

参考リンク

ruby - how to install "readline" for rails console - Stack Overflow

ruby on rails console hanging when loading - Stack Overflow