Ruby 4.1 リファレンスマニュアル

instance method Module#set_temporary_name

set_temporary_name(string) -> selfRuby 3.3 から[permalink][rdoc][edit]
set_temporary_name(nil) -> self

モジュール / クラスに一時的な名前を設定します。self を返します。

設定した名前は Module#nameModule#inspect の結果に反映され、そのモジュール / クラスのインスタンスや定数、メソッドの表示にも使われます。定数に代入せずに、動的に生成したモジュール / クラスを区別したい場合に便利です。

引数に nil を指定すると、再び無名の状態に戻ります。

定数に代入されて永続的な名前が付くと、一時的な名前は破棄されます。また、既に永続的な名前を持つモジュール / クラスには設定できません。

[PARAM] string:
一時的な名前を文字列で指定します。永続的な名前と紛らわしくならないよう、クラスパスとして有効な文字列は指定できません。nil を指定すると無名に戻ります。
[EXCEPTION] ArgumentError:
string がクラスパスとして有効な文字列(FooFoo::Bar など)である場合や、空文字列である場合に発生します。
[EXCEPTION] RuntimeError:
既に永続的な名前を持つモジュール / クラスに対して呼び出した場合に発生します。
m = Module.new
p m.name                          # => nil

m.set_temporary_name("<my temp>")
p m.name                          # => "<my temp>"

m.set_temporary_name(nil)
p m.name                          # => nil
例: 定数に代入すると永続的な名前になる
m = Module.new
m.set_temporary_name("<my temp>")
p m.name # => "<my temp>"

MyModule = m
p m.name # => "MyModule"
例: 設定できない名前
Module.new.set_temporary_name("Foo")      # ~> ArgumentError
Module.new.set_temporary_name("Foo::Bar") # ~> ArgumentError
Module.new.set_temporary_name("")         # ~> ArgumentError
String.set_temporary_name("<x>")          # ~> RuntimeError

[SEE_ALSO] Module#name