Issue #19742 has been updated by fxn (Xavier Noria).
@Dan0042 yes, there are different points of view expressed, and at some point Rails core
will take one direction or another.
In my personal proposal, none of the objects are `anonymous?`, because, for me, a
temporary name is name. And a permanent name is a name too. If you have a name, you are
not anonymous. (@ioquatix had a different point of view.)
The last of your examples is important. In Ruby "permanent name" and "being
reachable through the contant path" are orthogonal concepts. Once the permanent name
is set, there is no public API to change it. It is frozen, and what happens to the perhaps
dozen places where the object was stored is irrelevant.
The point of `anonymous?` is to have a predicate that expresses `name.nil?` with more
concision. If you grep the Rails project, you'll see it used in a bunch of places (it
is defined by Active Support).
----------------------------------------
Feature #19742: Introduce `Module#anonymous?`
https://bugs.ruby-lang.org/issues/19742#change-106264
* Author: ioquatix (Samuel Williams)
* Status: Open
* Priority: Normal
----------------------------------------
As a follow-on <from
https://bugs.ruby-lang.org/issues/19521>gt;, I'd like propose
we introduce `Module#anonymous?`.
In some situations, like logging/formatting, serialisation/deserialization, debugging or
meta-programming, we might like to know if a class is a proper constant or not.
However, this brings about some other issues which might need to be discussed.
After assigning a constant, then removing it, the internal state of Ruby still believes
that the class name is permanent, even thought it's no longer true.
e.g.
```
m = Module.new
m.anonymous? # true
M = m
m.anonyomous # false
Object.send(:remove_const, :M)
M # uninitialized constant M (NameError)
m.anonymous? # false
```
Because RCLASS data structure is not updated after the constant is removed, internally the
state still has a "permanent class name".
I want to use this proposal to discuss this issue and whether there is anything we should
do about such behaviour (or even if it's desirable).
Proposed PR:
https://github.com/ruby/ruby/pull/7966
cc @fxn
--
https://bugs.ruby-lang.org/