Project

General

Profile

Actions

Bug #7475

closed

Unexpected behavior of Module#append_features on singleton class

Added by ernie (Ernie Miller) about 12 years ago. Updated over 5 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0]
[ruby-core:50356]

Description

=begin
A more involved explanation is available at ((URL:http://erniemiller.org/2012/11/29/ruby-tidbit-include-vs-extend-with-module-class-variables/))

In short, the handling of class variables (and constants) when a module is extended vs included is not as expected.

Example:

module Foo
  @@foo = 'foo'
end

class Bar
  include Foo
end

class Baz
  extend Foo
end

Bar.class_variable_get :@@foo # => "foo"
Baz.singleton_class.class_variable_get :@@foo # => NameError: uninitialized class variable @@foo in Class

We would expect constant and class variable lookup on the singleton class to work, but it doesn't. Both Rubinius and JRuby seem to behave as expected in this case.

Thanks!
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0