.pryrc
Rubyistの皆さんはもうすでにPryを使っていると思います。が、Pryの真の力は~/.pryrc
をカスタムすることで発揮されます。ファイルがない人は作りましょう(5秒)。
touch ~/.pryrc
~/.pryrc
の内容は、Pryのセッションが開始されるたびに実行されます。たくさんのことができますが、今回はプロンプトを改良することに絞ります。
Pry.config.prompt
Pryのプロンプトの実体はPry.config.prompt
で、文字列または文字列を返すProc
オブジェクトを指定できます。プロンプトを動的に変更したい場合はProc
を使うのがいいでしょう。
ところで、Pryを使っていると、たまに今のRubyのバージョンがいくつか忘れてしまうことがありますね?まあ、puts RUBY_VERSION
すればいいんですけど、どうせならプロンプトに表示しましょう。pryrc
に以下を記述してください(コピペで5秒)。
Pry.config.prompt = proc do |obj, nest_level, _pry_|
version = ''
version << "#{RUBY_VERSION}"
"#{version} #{Pry.config.prompt_name}(#{Pry.view_clip(obj)})> "
end
pryrc
を保存したあとでpry
コマンドを実行すると、プロンプトに実行中のRubyのバージョンが表示されると思います。
色を付ける
ここからが本題、プロンプトに色を付けてみましょう。せっかくなのでRubyの赤色にしてみます(確認含めて20秒)。
Pry.config.color = true
Pry.config.prompt = proc do |obj, nest_level, _pry_|
version = ''
version << "\001\e[0;31m\002"
version << "#{RUBY_VERSION}"
version << "\001\e[0m\002"
"#{version} #{Pry.config.prompt_name}(#{Pry.view_clip(obj)})> "
end
どうでしょう、色は付いたでしょうか。大雑把に説明すると、\001\e
や\002
というのがエスケープ用のコード、[0;31m
がANSIカラーコードです。
Rails用のコード
RailsのコンソールをPryにしている人も多いでしょう。Railsプロジェクトを複数抱えている人の場合、よくバージョンの違いでつまずくことがありますが、そんな人はPryのコンソールにRailsのバージョンが表示されると助かるのではないでしょうか。pryrc
を以下のように変更します(20秒)。
Pry.config.color = true
Pry.config.prompt = proc do |obj, nest_level, _pry_|
version = ''
version << "Rails#{Rails.version}" if defined? Rails
version << "\001\e[0;31m\002"
version << "#{RUBY_VERSION}"
version << "\001\e[0m\002"
"#{version} #{Pry.config.prompt_name}(#{Pry.view_clip(obj)})> "
end
これでrails c
を実行した際、Pryをコンソールで利用している人なら、プロンプトにRailsのバージョンが表示されたはずです。
さらに改造
プロンプトの改良はさらに先に進めることもできます。例えば、2.0.0以前のRubyではパッチ番号が意味を持ちますのでそれを表示してもいいですし、Rubyのバージョンによってカラーコードを変更すれば文字で表示する必要はなくなるかもしれません。ほかにも動的な変更を加える余地は大きいはずです。
参考資料