From: "mame (Yusuke Endoh)" Date: 2012-11-24T09:13:48+09:00 Subject: [ruby-dev:46595] [ruby-trunk - Feature #7190][Assigned] warning: already initialized constant の書式 Issue #7190 has been updated by mame (Yusuke Endoh). Status changed from Open to Assigned Assignee set to nobu (Nobuyoshi Nakada) Target version set to next minor ---------------------------------------- Feature #7190: warning: already initialized constant の書式 https://bugs.ruby-lang.org/issues/7190#change-33685 Author: sawa (Tsuyoshi Sawada) Status: Assigned Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: Target version: next minor 未定義の定数を参照した場合のエラーメッセージでは名前空間がすべて表示されます: module A; B; end #=> NameError: uninitialized constant A::B A::B #=> NameError: uninitialized constant A::B しかし、既に定義してある定数を再定義した場合の警告メッセージでは名前空間が表示されません: module A; B = :foo end module A; B = :bar end #=> warning: already initialized constant B A::B = :baz #=> warning: already initialized constant B 後者の場合も前者の場合にならって名前空間を表示した方がよいと思います。 warning: already initialized constant A::B メタプログラミングで、$stderr = StringIO.new のように警告メッセージをリダイレクトしてコード内で定数の再定義を捕捉したい場合に、名前空間なしでは問題になっている定数を再現できません。 -- http://bugs.ruby-lang.org/