Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Demonstration of a weird bug in Ruby 1.9.
module MyModule
def some_method; super; end
end
class MyBaseClass; end
class MySubClass < MyBaseClass;
include MyModule
end
# To trigger this bug, we must include the module in the base class after
# the module has already been included in the subclass. If we move this line
# above the subclass declaration, this bug will not occur.
MyBaseClass.send(:include, MyModule)
MySubClass.new.some_method
➜ ruby --version
ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin10.6.0]
➜ ruby example.rb
example.rb:2:in `some_method': super: no superclass method `some_method' for #<MySubClass:0x1001bc2d0> (NoMethodError)
from example.rb:2:in `some_method'
from example.rb:13
➜ ruby --version
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.6.0]
➜ ruby example.rb
example.rb:2: stack level too deep (SystemStackError)
@ewollesen
Copy link

ewollesen commented Mar 28, 2013

Oh yeah, it's apparently slated to be fixed in 1.9.4.

http://bugs.ruby-lang.org/issues/3351

@canadaduane
Copy link

canadaduane commented Mar 28, 2013

Yuck!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment