我终其一生都找不到任何简单的解释。
我正在开发一个项目,该项目拥有自己的自定义代码,但也对包含的 gem 可用的类进行了一些扩展/覆盖。
实现此目的的正确文件夹结构和模块命名模式是什么?
例如,这是我为第三方“parallel_tests”gem 的扩展组织代码的方式,我正在研究的库称为“ChemistyKit ”:
lib/
chemistrykit/
parallel_tests/ # the gem name space i'm extending
rspec/
runner.rb
所以我基本上遵循该parallel_tests
文件夹下的 gem 相同的命名结构。
然后在那个runner.rb
文件中我有类似的东西:
module ChemistryKit
module ParallelTests
module RSpec
class Runner < ParallelTests::Test::Runner
但是,使用它会导致错误。我认为这是因为它实际上从未覆盖有问题的类,因为它的命名空间在ChemistryKit
这很令人困惑,因为在RSpec HTML 格式化程序的这种扩展中,格式化程序是在 gem 的顶级命名空间下使用的。那是因为在这种情况下它创建了一个名称相似但不同的类吗?目的不是覆盖,而是扩展?