Pry
ではクラス、モジュール、メソッドの定義をみることができる。
使うコマンドはshow-source
(show-method
や$
も使うことができる)。
ドキュメントはこちら。
サンプル用のコードpry_show_source.rb
を作成
pry_show_source.rb
def hello_world
p 'hello_world'
end
class MyClass
class << self
def hello_world
p 'hello_world in MyClass class'
end
def goodbye
p 'goodbye in MyClass class'
end
end
def hello_world
p 'hello_world in MyClass instance'
end
end
require 'pry'
binding.pry
$ ruby pry_show_source.rb
##メソッドの定義を見る
メソッド定義を確認するにはshow-source method-name
とうつ。
[] pry(main)> show-source hello_world
# =>
From: pry_show_source.rb @ line 1:
Owner: Object
Visibility: private
Number of lines: 3
def hello_world
p 'hello_world'
end
cd
でクラスの中に入ってからshow-source
すると、クラス内でメソッドを探してくれる。インスタンスメソッド、クラスメソッドの両方を探索するが、インスタンスメソッドが優先される。
[] pry(main)> cd MyClass
[] pry(MyClass):1> show-source hello_world
# =>
From: pry_show_source.rb @ line 16:
Owner: MyClass
Visibility: public
Number of lines: 3
def hello_world
p 'hello_world in MyClass instance'
end
[] pry(MyClass):1> show-source goodbye
# =>
From: pry_show_source.rb @ line 11:
Owner: #<Class:MyClass>
Visibility: public
Number of lines: 3
def goodbye
p 'goodbye in MyClass class'
end
class#method
でインスタンスメソッドを指定したり、object.method
でオブジェクトのメソッド(クラスメソッド)を指定することもできる。
[] pry(MyClass):1> exit
=> MyClass
[] pry(main)> show-source MyClass#hello_world
# =>
From: pry_show_source.rb @ line 16:
Owner: MyClass
Visibility: public
Number of lines: 3
def hello_world
p 'hello_world in MyClass instance'
end
[] pry(main)> show-source MyClass.hello_world
# =>
From: pry_show_source.rb @ line 7:
Owner: #<Class:MyClass>
Visibility: public
Number of lines: 3
def hello_world
p 'hello_world in MyClass class'
end
##クラスやモジュールの定義を見る
クラス定義を確認するにはshow-source class-name
とうつ。
[] pry(MyClass):1> show-source MyClass
# =>
From: pry_show_source.rb @ line 5:
Class name: MyClass
Number of lines: 15
class MyClass
class << self
def hello_world
p 'hello_world in MyClass class'
end
def goodbye
p 'goodbye in MyClass class'
end
end
def hello_world
p 'hello_world in MyClass instance'
end
end