Ruby で内部クラスを private にする

Ruby で内部クラスを private にする場合どうするのがよいかと思っていたんですが private_constant を使うのがいいみたい。

class X
    class A
        
    end

    class B
        
    end
    private_constant :B

    def self.B_new
        B.new
    end
end

# OK
X::A.new

# Error: private constant X::B referenced (NameError)
# X::B

# OK
X.B_new