From: "nobu (Nobuyoshi Nakada)" Date: 2013-01-02T10:53:49+09:00 Subject: [ruby-core:51218] [ruby-trunk - Bug #7643] call to super in define_method in refine results in stack level too deep Issue #7643 has been updated by nobu (Nobuyoshi Nakada). Description updated ---------------------------------------- Bug #7643: call to super in define_method in refine results in stack level too deep https://bugs.ruby-lang.org/issues/7643#change-35177 Author: beatrichartz (Beat Richartz) Status: Feedback Priority: Normal Assignee: shugo (Shugo Maeda) Category: Target version: ruby -v: ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin12.2.1] =begin When (({define_method})) is used within the refine block argument, calls to super will result in a stack level too deep. Definitions with def can call super without problems. module A refine Fixnum do %i(+ -).each do |m| define_method m do |other| super(other) end end def * other super(other) end end end class B using A def working puts 'working' 1 * 1 end def error puts 'stack level too deep' 1 + 1 end end puts B.new.working puts B.new.error =end -- http://bugs.ruby-lang.org/