我想创建一个包含自定义 rspec 匹配器的 gem。它们用于测试网络服务,所以这两个词部分是 RSpec 和 Webservice。现在, gem 名称应该是;
rspec-webservice
rspec-matchers-webservice
rspec_webservice
……还是别的什么?
naming guidelines似乎没有解决这种情况:
rspec-webservice
似乎是正确的,因为我正在“向另一个 gem 添加功能”。但这将对应于 RSpec::Webservice 中的 gem,而我不是 RSpec 的维护者,因此可能会出现命名冲突。
rspec-matchers-webservice
是一种可能性,因为这似乎是 RSpec 库本身的方式 is organized .
rspec_webservice
是一个安全的选项,因为它会简单地位于它自己的根命名空间 (RSpecWebservice) 中,并且会排除冲突,因为 rubygems 系统会确保这个名称不能用于另一个 gem 。
所有这些问题都与这样的 RSpec 扩展是否会在各种命名空间中运行的问题完全分开。
编辑:我得到的一条建议是不要使用其中任何一个,而是想出一个非描述性的名称。类似于 Web 服务器的 passenger。例如。 rspec-dogweather
.
最佳答案
在这种情况下没有标准指南。以下是一些方法:
如果您的 gem 为现有库提供额外的功能,则通常使用 original-feature
模式。著名的例子:
- rspec-rails
- net-ssh
- 守卫规范
请注意,此方法也用于将产品拆分为组件
- rspec 匹配器
- rspec 核心
在这种情况下,通常会将功能嵌入到主库命名空间中。正如您提到的,存在名称冲突的潜在风险。
rspec-matchers-webservice
这是一个选择,但我没有看到 rspec-matchers
“组件”。但这不会阻止您使用此类选择。我见过其他图书馆使用不同的顺序,例如 rspec-html-matchers
, 但我认为 rspec-matchers-foo
更好。
rspec_webservice
更安全,但不是很常见。
另一种可能性是一个全新的名称,但这可能不是一个明智的选择,特别是如果您的图书馆有一个非常小的 nike 并且它很可能是从搜索引擎或 RubyGems 网站上搜索的人那里找到的。对于您的情况,我会坚持使用与您扩展的产品接近的名称。
总而言之,我的建议是查看现有的 rspec extensions了解可能的常见模式并做出决定。 rspec-matchers-webservice
在我看来是最好的选择。
你也可以考虑写信给 RSpec 的维护者,向他们征求意见。
关于ruby-on-rails - 如何命名依赖于另一个 gem 的 gem ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20930190/