Techioz Blog

Ruby で定数が定義されている場所を見つけるにはどうすればよいですか?

概要

pry を使用すると、メソッドが定義されている場所を見つけたり、edit-method コマンドでソースを確認したりするのが非常に簡単です。しかし、クラス自体の対応はありません。そのクラスにそれ自体にメソッドが定義されていない場合、pry でソースを見つけるのは困難です。

クラスは定数であるため、特定の Ruby 定数が定義されているソースがどこにあるかを尋ねることと同じです。どうもありがとうございます。

解決策

Ruby 2.7 では、これを行うより良い方法があり、それが Module.const_source_location です。

> Admin.const_source_location(:LIMIT)
#=> ["SOME_PATH/user.rb", 2]

参考文献:

@ulysse-bn からのボーナス:

このメソッドにすばやくアクセスするには、次のように IRB 設定に追加します。

# displays path of constant
#
# Usage:
#
#     _source_location(::ActiveRecord::Base)
#
def _source_location(const)
  Object.const_source_location(const.name)
end