如何将所有gem类和模块设为私有?

时间:2016-04-21 07:20:58

标签: ruby

如何仅从Ruby gem中公开一个模块或类并关闭其他所有内容?

例如,在my-math库中,我只想公开Math模块,而不是其他任何模块,例如Math::Utils或类似模块。

我想强制执行一种且只有一种方法来使用gem。

至少让访问内部类很困难会有所帮助(即使在运行时更改名称也会比开放访问更好。)

1 个答案:

答案 0 :(得分:2)

不清楚你想要做什么,但如果你想要私有常量,为什么不直接声明它们呢?

module Namespace
  module Secret
  end
  private_constant :Secret
  Secret # => Namespace::Secret
end

Namespace::Secret # => NameError. Private constant Namespace::Secret referenced.