From: ko1@... Date: 2015-08-21T17:30:53+00:00 Subject: [ruby-core:70526] [Ruby trunk - Bug #6981] [Closed] set_trace_func passes strange bindng on method call defined by define_method Issue #6981 has been updated by Koichi Sasada. Status changed from Open to Closed Ruby 2.1 solved this issue. ---------------------------------------- Bug #6981: set_trace_func passes strange bindng on method call defined by define_method https://bugs.ruby-lang.org/issues/6981#change-53930 * Author: Koichi Sasada * Status: Closed * Priority: Normal * Assignee: Koichi Sasada * ruby -v: ruby 2.0.0dev (2012-08-08 trunk 36657) [i386-mswin32_100] * Backport: ---------------------------------------- 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. -- https://bugs.ruby-lang.org/