Project

General

Profile

Bug #12109

Updated by shyouhei (Shyouhei Urabe) over 3 years ago

I noticed this bug using Rails, which lazy-loads classes (via ActiveSupport.)

Here's a minimal test case:

~~~ruby

~~~

#!/usr/bin/env ruby

begin
# simulate loading a class from file at runtime
eval %q{
class Foo
def self.bar
fail 'bar'
end

bar

def self.baz
puts 'baz'
end
end
}
rescue => e
puts "rescued: #{e}"
end
# => rescued: bar

Foo.baz
# => undefined method `baz' for Foo:Class (NoMethodError)
~~~

EXPECTED
Either:
* No exception - finish adding the method to the class, or
* 'undefine' the class, at least making it obvious that the class didn't load completely (or in the case of rails/activesupport, allow it to be reloaded on-demand later)

Back