通常のクラスでは、自身のクラス名は、問題なく解決できます。

class Hoge
  def new_my_class
    Hoge.new
  end
end

h = Hoge.new
p h.new_my_class
# => #<Hoge:0x000000032f6b58>

BasicObject を継承したクラスでは、これができないことがわかりました。

class HogeBasic < BasicObject
  def new_my_class
    HogeBasic.new
  end
end

h = HogeBasic.new
p  h.new_my_class
# # 以下の例外が発生する。
# NameError: uninitialized constant HogeBasic::HogeBasic
# Did you mean?  HogeBasic

これは、なぜなのでしょうか?