Ruby の 定番対話ツール pry 徹底攻略 | Plugins
概要
Ruby の 定番対話ツール pry 徹底攻略
Plugins
Plugins
Pry は Plugin によって拡張可能です。
Plugin は非常にシンプルで、 Pry のセッション開始時に自動的に読み込まれるただの gem です。
利用可能な Plugin は Available Plugins wiki にあります。
What is a plugin?
有効な Pry の Plugin は pry-
のプリフィックスを持つ。
例えば pry-debugger
。
また、 lib
直下に同名の rb ファイルが必要です。
pry-debugger の例なら lib/pry-debugger.rb
Plugin によって提供される機能は、基本的に
Customization と command system からなる。
最小限のサンプル
三角形の面積を計算する Plugin として pry-triangle gem を作ったとします。
その場合、 lib/pry-triangle.rb は以下のようになります。
Pry::Commands.create_command "triangle" do
description "calculate triangle area"
def process(width, height)
output.puts (width.to_i * height.to_i) / 2
end
end
- Install
$ gem install pry-triangle
- 試行
% pry
[1] pry(main)> help triangle
calculate triangle area
-h, --help Show this message.
[2] pry(main)> triangle 2 4
4
Loading and suppression (all plugins)
すべての Plugin を無効化します
pry-triangle ・ pry-toys はともに無効化されたことを確認します。
$ pry --no-plugins
[3] pry(main)> triangle 2 43
SyntaxError: unexpected tINTEGER, expecting end-of-input
[3] pry(main)> Array.toy(2, String)
NoMethodError: undefined method `toy' for Array:Class
from (pry):2:in `__pry__'
- .pryrc に以下の設定をしても同じです
Pry.config.should_load_plugins = false
Loading and suppression (per plugin)
任意の Plugin を無効化します。
pry-triangle のみ無効化し、 pry-toys は動作することを確認します。
% pry -d triangle
[1] pry(main)> triangle 2 4
SyntaxError: unexpected tINTEGER, expecting end-of-input
[1] pry(main)> Array.to
Array.to_enum Array.to_s Array.toy
[1] pry(main)> Array.toy(3, String)
=> ["aaaaaaaaa", "wwww", "xx"]
- .pryrc に以下の設定をしても同じです
Pry.plugins["triangle"].disable!
List installed plugins
インストールした Plugin のリストを確認
% pry --plugins
Installed Plugins:
--
byebug Fast debugging with Pry.
doc Provides YARD and extended documentation support for Pry
toys Toy objects for Pry
triangle test