reline で printf デバッグするときのライフハック

今日の Toyama.rb で reline のデバッグするときの便利機能を聞いたので覚書。
reline を起動した状態で reline 自体を printf デバッグすると表示が崩れてしまうのでその場合のライフハック

  1. 端末を2つ用意する
    • デバッグ出力用と実際に reline の入力用の2つ
  2. デバッグ出力用で tty を入力して出力先をメモっておく
$ tty
/dev/pts/3
  1. もう片方の端末で以下のように reline を起動する
    • 環境変数 RELINE_STDERR_TTY に先程の tty の結果を指定して起動する
# reline のリポジトリで実行する
$ RELINE_STDERR_TTY=/dev/pts/3 bin/console
  1. 起動したコンソールで $stderr.puts 'hoge' を入力するとデバッグ出力用の端末で出力が行われる
    • 実際には reline のコード上で $stderr.puts @hoge みたいなデバッグ出力を仕込んでやる

これ知らなかったのでめっちゃ便利