Simulate Ruby 1.8, 1.9, JRuby’s set_trace_func and SCRIPT_LINES__ in Rubinius.

What is method Kernel#set_trace_func and constant SCRIPT_LINES___ ?

set_trace_func(proc) establishes proc as the handler for tracing or disables tracing if the parameter is nil.

if constaint __SCRIPT_LINES____ is defined and references a Hash, Ruby will store an entry containing the contents of each Ruby file it loads. The key for each hash entry is the file loaded as given by Ruby meta-constant “FILE” and the value is an Array of Strings with newlines containing the file contents.

Example of set_trace_func :

   require 'rubygems'; require 'set_trace'
   meth = lambda { |event, file, line, id, binding, classname|
     puts "tracer: #{event} #{file}:#{line}"
   }
   set_trace_func meth

Example of SCRIPT_LINES__ :

   require 'rubygems'; require 'script_lines'
   SCRIPT_LINES__ = {}
   load 'foo.rb'
   # SCRIPT_LINES__ should have 'foo.rb' as a key and file contents as an Array
   # if it the 'foo.rb' loaded successfully.