From: "matheusrich (Matheus Richard) via ruby-core" <ruby-core@...>
Date: 2023-02-24T17:14:59+00:00
Subject: [ruby-core:112572] [Ruby master Feature#19450] Is there an official way to set a class name without setting a constant?

Issue #19450 has been updated by matheusrich (Matheus Richard).


Semi-related (maybe it should be a separate issue?) but assigning a class to a constant via rightward assignment results in `NameError`

``` ruby
Class.new => Klass
# uninitialized constant Klass (NameError)
```


----------------------------------------
Feature #19450: Is there an official way to set a class name without setting a constant?
https://bugs.ruby-lang.org/issues/19450#change-102021

* Author: ioquatix (Samuel Williams)
* Status: Open
* Priority: Normal
----------------------------------------
This is the best I could come up with:

```ruby
klass = Class.new

Object.const_set("Klass", klass)
Object.send(:remove_const, "Klass")

puts klass.new
# => #<Klass:0x0000000100a9d688>
```

Can we do better?

What about something like:

```ruby
Class.new(name: "Klass")
```

or

```ruby
Class.new do
  def self.name
    "Klass"
  end
end
```

etc



-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/