Project

General

Profile

Bug #12109

Updated by shyouhei (Shyouhei Urabe) about 8 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