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