From: "sawa (Tsuyoshi Sawada)" Date: 2012-10-20T11:00:59+09:00 Subject: [ruby-dev:46239] [ruby-trunk - Feature #7190][Open] warning: already initialized constant の書式 Issue #7190 has been reported by sawa (Tsuyoshi Sawada). ---------------------------------------- Feature #7190: warning: already initialized constant の書式 https://bugs.ruby-lang.org/issues/7190 Author: sawa (Tsuyoshi Sawada) Status: Open Priority: Normal Assignee: Category: Target version: 未定義の定数を参照した場合のエラーメッセージでは名前空間がすべて表示されます: 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/