如何仅从Ruby gem中公开一个模块或类并关闭其他所有内容?
例如,在my-math
库中,我只想公开Math
模块,而不是其他任何模块,例如Math::Utils
或类似模块。
我想强制执行一种且只有一种方法来使用gem。
至少让访问内部类很困难会有所帮助(即使在运行时更改名称也会比开放访问更好。)
答案 0 :(得分:2)
不清楚你想要做什么,但如果你想要私有常量,为什么不直接声明它们呢?
module Namespace
module Secret
end
private_constant :Secret
Secret # => Namespace::Secret
end
Namespace::Secret # => NameError. Private constant Namespace::Secret referenced.