如何命名一个依赖于另一个宝石的宝石?

时间:2014-01-05 04:49:30

标签: ruby-on-rails ruby web-services rspec

我想创建一个包含自定义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

2 个答案:

答案 0 :(得分:1)

在这种情况下没有标准准则。以下是一些方法:

如果您的gem为现有库提供了额外的功能,那么使用模式original-feature是很常见的。值得注意的例子:

  • rspec的护栏
  • 净-SSH
  • 护rspec的

请注意,此方法还用于将产品拆分为组件

  • rspec的-匹配器
  • rspec的核

在这种情况下,将功能嵌入主库名称空间是很常见的。正如您所提到的,名称冲突存在潜在风险。

rspec-matchers-webservice这是一个选择,但我没有看到rspec-matchers“组件”。这不会阻止您使用这样的选择。我见过其他库使用不同的订单,例如rspec-html-matchers,但我认为rspec-matchers-foo更好。

rspec_webservice更安全,但并不常见。

另一种可能性是一个全新的名称,但这可能不是一个明智的选择,特别是如果你的图书馆有一个非常小的耐克,而且很可能是在搜索引擎或RubyGems网站上搜索的人。在您的情况下,我会坚持使用您所延伸的产品附近的名称。

总之,我的建议是查看现有的rspec extensions,了解可能的共同模式并做出决定。 rspec-matchers-webservice在我看来是最好的选择。

您也可以考虑写信给RSpec维护人员并向他们征求意见。

答案 1 :(得分:0)

请参阅RubyGems指南中的Name your gem

基本上:

  1. 使用下划线表示多个单词
  2. 使用破折号进行分机
  3. 您可以根据需要混合下划线和短划线。