Actions
Bug #12109
closedException during class load can cause partially-loaded class
    Bug #12109:
    Exception during class load can cause partially-loaded class
  
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin15]
Description
I noticed this bug using Rails, which lazy-loads classes (via ActiveSupport.)
Here's a minimal test case:
#!/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)
Actions