Issue #5887 has been updated by matz (Yukihiro Matsumoto).

Status changed from Assigned to Closed

The document has been fixed already:

 In the first form, returns an array of the names of all
 constants accessible from the point of call.
 This list includes the names of all modules and classes
 defined in the global scope.

If you are going to propose alternative name for Module.constant, submit a feature request.
It might be difficult due to the compatibility rule.

Matz.

----------------------------------------
Bug #5887: The documentation of Module.constants is incorrect
https://bugs.ruby-lang.org/issues/5887#change-28118

Author: shugo (Shugo Maeda)
Status: Closed
Priority: Normal
Assignee: shugo (Shugo Maeda)
Category: core
Target version: 
ruby -v: ruby 2.0.0dev (2012-01-12 trunk 34015) [i686-linux]


The documentation of Module.constants says "Returns an array of the names of all constants defined in the system. This list includes the names of all modules and classes."  However, Module.constants returns the names of the constants accessible at the place where the method is called:

  class A
    X = 1
    p Module.constants.include?(:X) #=> true
  end

Could someone fix the documentation?  I can't write a proper English documentation.

OT: I think Module.constants should be renamed in the future, because Module.constants is confusing with Module#constants.  Why the hell do I have to write the following tricky code to invoke Module#constants on Module itself?

  p Module.instance_method(:constants).bind(Module).call



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