LoginSignup
3
3

More than 5 years have passed since last update.

Ruby の 定番対話ツール pry 徹底攻略 | Plugins #pry #ruby

Posted at

Ruby の 定番対話ツール pry 徹底攻略 | Plugins

:musical_score: 概要

Ruby の 定番対話ツール pry 徹底攻略
Plugins

Plugins

Pry は Plugin によって拡張可能です。
Plugin は非常にシンプルで、 Pry のセッション開始時に自動的に読み込まれるただの gem です。

利用可能な Plugin は Available Plugins wiki にあります。

:question: What is a plugin?

有効な Pry の Plugin は pry- のプリフィックスを持つ。
例えば pry-debugger
また、 lib 直下に同名の rb ファイルが必要です。
pry-debugger の例なら lib/pry-debugger.rb

Plugin によって提供される機能は、基本的に
Customizationcommand system からなる。

:ant: 最小限のサンプル

三角形の面積を計算する Plugin として pry-triangle gem を作ったとします。
その場合、 lib/pry-triangle.rb は以下のようになります。

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

:man::woman: 親記事

Ruby の 定番対話ツール pry 徹底攻略

:books: 外部資料

3
3
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
3
3