LoginSignup
61
59

More than 5 years have passed since last update.

Pryコンソールのプロンプトをカラフルかつ便利にする

Last updated at Posted at 2014-12-09

.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秒)。

pryrc
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秒)。

pryrc
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秒)。

pryrc
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のバージョンによってカラーコードを変更すれば文字で表示する必要はなくなるかもしれません。ほかにも動的な変更を加える余地は大きいはずです。

参考資料

61
59
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
59