From: "ko1 (Koichi Sasada)" Date: 2012-09-05T06:03:54+09:00 Subject: [ruby-core:47429] [ruby-trunk - Bug #6981][Open] set_trace_func passes strange bindng on method call defined by define_method Issue #6981 has been reported by ko1 (Koichi Sasada). ---------------------------------------- Bug #6981: set_trace_func passes strange bindng on method call defined by define_method https://bugs.ruby-lang.org/issues/6981 Author: ko1 (Koichi Sasada) Status: Open Priority: Normal Assignee: ko1 (Koichi Sasada) Category: core Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2012-08-08 trunk 36657) [i386-mswin32_100] set_trace_func passes strange binding on method call ("call") if invoked method was defined by define_method. Correctly speaking, the caller's binding was passed. # example class C define_method(:foo){ p:foo } def bar p:bar end end set_trace_func(lambda{|ev, *args| if ev == 'call' p eval('self', args[3]) end }) C.new.foo #=> main C.new.bar #=> # On Ruby 1.8, there is no problem. -- http://bugs.ruby-lang.org/