Ruby, how do I hack thee? Let me count the ways... Pure Ruby (using set_trace_func, callcc, etc.) Already-written extensions (enumerator, stringio, etc.) Using libdl (e.g. evil.rb) Writing your own extensions Hacking the interpreter itself