class_eval内でのclass定義でのwarning

class_eval 内での class 定義でwarningがでる。

サンプルコード

class Hoge
  class HogeException < StandardError; end
end

Hoge.class_eval do
  class ClassEvalException < StandardError; end
end

puts HogeException       # => NameError
puts ClassEvalException  # => ClassEvalException
puts Hoge::HogeException # => Hoge::Exception

puts Hoge::ClassEvalException
# warning: toplevel constant ClassEvalException referenced by Hoge::ClassEvalException
# => Hoge::ClassEvalException

evalをやめる以外の解決方法ありますかね...

追記

@moro から解決方法もらえました。

Hoge.class_eval do
  class self::ClassEvalException < StandardError; end
end

puts ClassEvalException       # => NameError
puts Hoge::ClassEvalException # => Hoge::ClassEvalException