Today I was investigating a Ruby Proc created in a gem, and I wanted to know how it was defined. Other than reading source code, there doesn’t seem to be a good way to do this! Prove me wrong.

We can get close by using Ruby’s #source_location function on Proc:

some_proc.source_location
=> ["/gems/2.4.0/bundler/gems/spree/core/app/models/spree/order.rb", 34]

This command shows us the line where Proc is defined. Go there to continue source-diving.