49hack

見習いエンジニアが魔法使いになるまで

「`require': cannot load such file -- readline (LoadError)」のエラーを解消する

動作環境

$ cat /etc/`ls /etc -F | grep "release$\|version$"`
CentOS release 6.4 (Final)
$ rails -v
Rails 4.0.0
$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]

事象

rails consoleコマンドを打つと以下のようなエラーが出ました。

$ rails c
...
/usr/local/rbenv/versions/1.9.3-p448/lib/ruby/1.9.1/irb/completion.rb:9:in `require': cannot load such file -- readline (LoadError)
        from /usr/local/rbenv/versions/1.9.3-p448/lib/ruby/1.9.1/irb/completion.rb:9:in `<top (required)>'
        from /usr/local/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands/console.rb:3:in `require'
        from /usr/local/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands/console.rb:3:in `<top (required)>'
        from /usr/local/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:53:in `require'
        from /usr/local/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:53:in `<top (required)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<main>'

対処法

gemで必要なライブラリをインストールします。 Gemfileに以下を追記します。

gem 'rb-readline'

実行すると次は違うエラーが出ます。

$ rails c
...
uninitialized constant IRB::ReadlineInputMethod::Readline (NameError)
...

これはライブラリのバージョンを指定してあげると解消します。

gem 'rb-readline', '~> 0.4.2'
$ rails c
Loading development environment (Rails 4.0.0)
irb(main):001:0> 

参考