好的,所以我认为这可能是超级琐碎或不可能的,但无论哪种方式,我都在努力寻找答案。
我现在正在使用ruby创建一个gem,它在许多不同的文件中都有许多类,所有文件都在主gem文件中导入,如下所示:
# lib/main_gem_file.rb
module MainGemFile
Dir[File.join(__dir__, 'main_gem_file', '*.rb')].each do |file|
require file
end
end
这很好用,我的所有文件都已加载。问题是,它们都没有在MainGemFile命名空间下加载。目前,main_gem_file中没有类文件在其定义中使用命名空间,因此它们如下所示:
# lib/main_gem_file/class_one.rb
class ClassOne
end
理想情况下,我会找到一种方法来执行以下操作:
此外,我希望以一种方式构建所有内容,任何需要此gem的ruby项目必须使用MainGemFile :: ClassA语法来访问Class,同时允许gem的实际内部类访问其兄弟类只是ClassA调用,因为它们是在同一个模块中定义的。再一次,感觉就像在每个类调用之前必须经历并且手动添加MainGemFile ::的grunt工作,但是如果它们不是其他解决方案的话就会这样做。