メソッドの定義場所を見つける
> obj.method(:method_name).source_location
参考:
Ruby でメソッドの定義場所を見つける方法 – Qiita
instance method Object#method (Ruby 2.6.0)
instance method Method#source_location (Ruby 2.6.0)
instance method Proc#source_location (Ruby 2.6.0)
How to find the method definition in Ruby | Rails Guides
クラスや定数の定義場所を見つける
TL;DR
クラスや定数に何か値を再代入すると警告と共に元の定義場所が出力される。
> Rails = Rails warning: already initialized constant Rails /path/to/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.rc1/lib/rails/initializable.rb:5: warning: previous definition of Rails was here
参考:
Ruby で class や const の定義位置を調べる方法 – Qiita
Feature #10771: An easy way to get the source location of a constant | Ruby Issue Tracking System
Source location of a class – Stack Overflow
lambda / Proc のソースコード
source_location
RubyVM::AbstractSyntaxTree.of
参考:
Ruby のメソッド、Proc のソースを取り出す – Qiita
Ruby の Proc オブジェクトのソースを表示するコード – Qiita
Feature #2080: Proc#to_source, Method#to_source | Ruby Issue Tracking System
Extracting Lambda Source Code | Developer.Notes
instance method Proc#source_location (Ruby 2.6.0)
Module: RubyVM::AbstractSyntaxTree (Ruby 2.6) | Ruby-Doc.org
rb_ast_s_of – ruby/ast.c at v2_6_3 · ruby/ruby – GitHub
Is it possible to see the ruby code in a proc? – Stack Overflow
Printing the source code of a Ruby block – Stack Overflow
Pry
ソースのコメントを表示する。
> ? obj.method_name
メソッドの定義 (ソース) を表示する。
> $ obj.method_name
参考:
Ruby でメソッドの定義場所を見つける方法 – Qiita
Pry::Method#source
特異メソッドのソースを取得する。
Pry::Method(obj.method(:method_name)).source
インスタンスメソッドのソースを取得する。
Pry::Method(mod.instance_method(:method_name)).source
Proc
のソースを取得する。
square = -> (x) { x * x } Pry::Method(square).source # => "square = -> (x) { x * x }\n"
参考:
source – pry/method.rb at v0.12.2 · pry/pry – GitHub
method_source
参考:
banister/method_source: return the sourcecode for a method – GitHub
Sourcify
参考:
ngty/sourcify: Workarounds before ruby-core officially supports Proc#to_source (& friends)
ruby2ruby
参考:
Documentation for ruby2ruby | RubyDoc.info
sexp_processor
参考:
seattlerb/sexp_processor – GitHub
Documentation for sexp_processor | RubyDoc.info
Gist コード
参考: