2019年4月16日火曜日

macOS の irb で前のコマンドがカーソルを先頭にするショートカットがうまく動作しないときの対処方法

概要

macOS で irb を使うと Ctrl+a でカーソルを先頭にしたり Ctrl+p で前のコマンドにしたい場合は ^A^P になってしまい動作しません
readline が必要なのですが普通に readline をインストールしただけではダメだったので対象方法を紹介します

環境

  • macOS 10.14.4
  • Ruby 2.6.2p47

readline インストール

  • brew install readline

ruby 再インストール

homebrew ですでに ruby をインストールしていました
おそらくその時にはまだ readline がインストールされていなく irb の挙動もおかしくなっていたんだと思います
homebrew で ruby をインストールした場合もし readline があればそれを使ってビルドしてくれるので irb も正しい挙動になります

なので readline をインストールしたあとで ruby も再インストールすれば irb も直ります

homebrew の ruby はいろいろと依存関係がある可能性が高く面倒なので upgrade しました

  • brew upgrade ruby
  • echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile

homebrew の Ruby 2.6 はインストールパスが代わり手動で PATH を通す必要があります

irb のインストール

Ruby 2.6 の場合 irb も一緒に homebrew でインストールされます
が以下のエラーになり起動できません

Traceback (most recent call last):                                                                                             
        2: from /usr/local/opt/ruby/bin/irb:23:in `<main>'                                                                     
        1: from /usr/local/Cellar/ruby/2.6.2/lib/ruby/2.6.0/rubygems.rb:302:in `activate_bin_path'                             
/usr/local/Cellar/ruby/2.6.2/lib/ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': can't find gem irb (>= 0.a) with executable 
irb (Gem::GemNotFoundException)

どうやら gem 側でもインストールする必要があるのでインストールしましょう

  • gem install irb

ちなみに bundler でも同じエラーになるのでインストールしました

  • gem install bundler

あとは rake や rdoc コマンドも一緒にインストールされていたので、それらも使うのであれば gem install が必要だと思います

.irbrc の場所

普通に ~/.irbrc に配置すれば OK です
うまく読み込まれいるか確認する場合は irb -d で起動すればデバッグモードになるのでわかりやすいと思います

最後に

readline をインストールすれば OK みたいな記事が多かったのですが、それだけではダメでインストールした readline を使って再ビルドする必要がありました

0 件のコメント:

コメントを投稿