Pry起動時にエラーが出る場合の対処法

  • 18
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

下記コマンドでPryをインストール後

$ gem install pry pry-doc

Pryを起動しようとしてもエラーが出てPryが起動しない場合

$ pry
Sorry, you can't use Pry without Readline or a compatible library.
Please `gem install rb-readline` or recompile Ruby --with-readline.'

rbenvでのRubyインストール時にライブラリを利用するためのオプションが指定されていない可能性があります。
意味が分かってからエラーメッセージを確認すればrecompile Ruby --with-readlineと書いてあり、その通りなのですが備忘録として記載します。

前提条件:homebrewとrbenvがインストールされていること

readlineとopensslの再インストール

(不要な気もしますがまっさらな状態から入れ直したかったので)

まずはreadlineから

$ brew uninstall readline
Uninstalling /usr/local/Cellar/readline/6.2.4...
$ brew install readline
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/readline-6.2.4.mavericks.bottle.2.tar.gz
Already downloaded: /Library/Caches/Homebrew/readline-6.2.4.mavericks.bottle.2.tar.gz
==> Pouring readline-6.2.4.mavericks.bottle.2.tar.gz
==> Caveats
This formula is keg-only, so it was not symlinked into /usr/local.

OS X provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only.

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/readline/lib
    CPPFLAGS: -I/usr/local/opt/readline/include

==> Summary
?  /usr/local/Cellar/readline/6.2.4: 31 files, 1.6M

$ brew link readline --force

次にopenssl

$ brew uninstall openssl
Uninstalling /usr/local/Cellar/openssl/1.0.1f...
$ brew install openssl
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/openssl-1.0.1f.mavericks.bottle.tar.gz
Already downloaded: /Library/Caches/Homebrew/openssl-1.0.1f.mavericks.bottle.tar.gz
==> Pouring openssl-1.0.1f.mavericks.bottle.tar.gz
==> Caveats
This formula is keg-only, so it was not symlinked into /usr/local.

Mac OS X already provides this software and installing another version in
parallel can cause all kinds of trouble.

The OpenSSL provided by OS X is too old for some software.

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/openssl/lib
    CPPFLAGS: -I/usr/local/opt/openssl/include

==> security find-certificate -a -p /Library/Keychains/System.keychain > '/usr/local/etc/openssl/osx_cert.pem.tmp'
Warning: The post-install step did not complete successfully
You can try again using `brew postinstall openssl`
==> Summary
?  /usr/local/Cellar/openssl/1.0.1f: 429 files, 15M

$ brew link openssl --force

linkコマンドは--forceを付けないとwarningが出たので付けています。

Rubyの再インストール(Ver2.1.0)

$ sudo rbenv uninstall 2.1.0
Password:
rbenv: remove /Users/***/.rbenv/versions/2.1.0? y

$ rbenv version
rbenv: version `2.1.0' is not installed
system

CONFIGURE_OPTSという記述を追加してRubyを再コンパイルします。

CONFIGURE_OPTS="--with-readline-dir=/usr/local/opt --with-openssl-dir=/usr/local/opt" rbenv install 2.1.0
Downloading ruby-2.1.0.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/9e6386d53f5200a3e7069107405b93f7
Installing ruby-2.1.0...
Installed ruby-2.1.0 to /Users/***/.rbenv/versions/2.1.0

再コンパイルしたRubyをrbenvに反映してバージョン確認をします。

$ rbenv rehash
$ rbenv versions
  system
* 2.1.0 (set by /Users/***/.rbenv/version)

$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin13.0]

Pryの動作確認

$ pry
[1] pry(main)> name="ほげ"
=> "ほげ"
[2] pry(main)>

無事Pryが起動しました。