2019年4月17日水曜日

irbrc 入門

概要

irb はデフォルトで ~/.irbrc を読み込んでくれます
プロンプトの表示や補完、履歴の保存などいろいろ irb をカスタマイズする設定を書くことができます
今回はオススメする設定の一部を紹介したいと思います

環境

  • macOS 10.14.4
  • Ruby 2.6.2p47
  • irb 1.0.0

履歴を保存する

IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"

100 件分の履歴を HISTORY_FILE で指定したファイルに保存してくれます
ここで保存された履歴は Ctrl+p や Ctrl+r などで再度使用することができます
ファイルはただのテキストファイルなのでディスクの容量に余裕があれば 10000 件くらい保存してもいいと思います

コマンドを補完する

require 'irb/completion'

これだけで TAB で Ruby の標準のメソッドや定数を補完してくれます
試しに「pu」まで打って TAB で補完すると puts などの候補が表示されると思います

プロンプトをカスタマイズする

IRB.conf[:PROMPT][:DEFAULT] = {
  :PROMPT_I=>"%N(%m):%03n:%i> ",
  :PROMPT_N=>"%N(%m):%03n:%i> ",
  :PROMPT_S=>"%N(%m):%03n:%i%l ",
  :PROMPT_C=>"%N(%m):%03n:%i* ",
  :RETURN=>"=> %s\n"
}

上記はデフォルトの設定です
%N%m などのフォーマット文字列が使えます

  • %N・・・irb
  • %m・・・main
  • %03n・・・3 桁の行番号
  • %i・・・インデントの数
  • %l・・・文字列中のタイプ

%l がわかりにくいですが例えば each を使っている場合は * になります

irb(main):007:0> a.each { |aa|
irb(main):008:1* puts aa
irb(main):009:1> }

wirb

  • gem install wirb
require 'wirb'
Wirb.start

これで出力結果に色が付きます
余談ですが irb -d で起動すると以下のようなエラーが発生しました
が require は正常に動作しているので問題ないです
おそらく $LOAD_PATH の順番が影響しているっぽく始めにロードしたパスではライブラリを見つけられなかったのですが後から検索したパスでうまく require できたんだと思います

Exception `LoadError' at /usr/local/Cellar/ruby/2.6.2/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54 - cannot load such file -- wirb
Exception `LoadError' at /usr/local/Cellar/ruby/2.6.2/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54 - cannot load such file -- 2.6/psych.so
Exception `LoadError' at /usr/local/Cellar/ruby/2.6.2/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:132 - cannot load such file -- 2.6/psych.so
Exception `NameError' at /usr/local/Cellar/ruby/2.6.2/lib/ruby/2.6.0/psych/class_loader.rb:68 - uninitialized constant BigDecimal
Exception `NameError' at /usr/local/Cellar/ruby/2.6.2/lib/ruby/2.6.0/psych/class_loader.rb:68 - uninitialized constant Date
Did you mean?  Data
Exception `NameError' at /usr/local/Cellar/ruby/2.6.2/lib/ruby/2.6.0/psych/class_loader.rb:68 - uninitialized constant DateTime

設定の一覧を確認

  • irb

で irb を起動して

irb(main):003:0> IRB.conf

で確認できます
参照する場合は

puts IRB.conf[:VERSION]
irb 1.0.0 (2018-12-18)

こんな感じで参照できます

最後に

irb を拡張する方法を紹介しました
.irbrc には Ruby そのものが書けるのでモジュールを拡張したりすれば更にいろいろできます

デフォルトの設定でもだいぶ強力なのでまずはデフォルトに慣れておくのが良いと思います

参考サイト

0 件のコメント:

コメントを投稿