introspection/script_compiled.rb

tests/_examples/introspection/script_compiled.rb in the metorex repository.

# Every string the interpreter compiles fires a `:script_compiled` event, and
# the trace reads the source back out of it.
compiled = []

trace = TracePoint.new :script_compiled do |event|
  compiled << event.eval_script
end

trace.enable do
  eval "def greeting\n  'hello'\nend\n"
  eval "1 + 1"
end

p compiled
p greeting

Output:

["def greeting\n  'hello'\nend\n", "1 + 1"]
"hello"