From: nobu@... Date: 2015-10-30T03:21:28+00:00 Subject: [ruby-dev:49319] [Ruby trunk - Bug #2402] super in instance_eval Issue #2402 has been updated by Nobuyoshi Nakada. Description updated ---------------------------------------- Bug #2402: super in instance_eval https://bugs.ruby-lang.org/issues/2402#change-54647 * Author: Shugo Maeda * Status: Closed * Priority: Normal * Assignee: Yukihiro Matsumoto * ruby -v: ruby 1.9.2dev (2009-11-24 trunk 25909) [i686-linux] * Backport: ---------------------------------------- `instance_eval`のブロック内で`super`を呼ぶと、`instance_eval`で変更された `self`に対して`super`の呼び出しを行ってしまうようです。 ~~~ruby defiant:build$ cat t.rb class Foo def foo p self end end class Bar < Foo def foo x = Object.new x.instance_eval do super end end end Bar.new.foo ~~~ ~~~ defiant:build$ ./ruby-trunk.1124 -v t.rb ruby 1.9.2dev (2009-11-24 trunk 25909) [i686-linux] # ~~~ `Foo#foo`が呼ばれるのに`self`が`Object`という、ちょっとおかしなことになっています。 ちょっと自信がありませんが、一応パッチを添付します。 ---Files-------------------------------- super_in_instance_eval_fix.diff (2.03 KB) -- https://bugs.ruby-lang.org/