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 から解決方法もらえました。
@hrysd class self::ClassEvalException; end
— MOROHASHI Kyosuke (@moro) March 2, 2015
Hoge.class_eval do
class self::ClassEvalException < StandardError; end
end
puts ClassEvalException # => NameError
puts Hoge::ClassEvalException # => Hoge::ClassEvalException