Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何命名依赖于其他宝石的宝石';什么是宝石?_Ruby On Rails_Ruby_Web Services_Rspec - Fatal编程技术网

Ruby on rails 如何命名依赖于其他宝石的宝石';什么是宝石?

Ruby on rails 如何命名依赖于其他宝石的宝石';什么是宝石?,ruby-on-rails,ruby,web-services,rspec,Ruby On Rails,Ruby,Web Services,Rspec,我想创建一个包含自定义rspec匹配器的gem。它们用于测试web服务,所以两个单词部分是RSpec和Webservice。现在,宝石的名称应该是 rspecwebservice rspec matchers网站服务 rspec\u网络服务 。。。还是别的什么 似乎没有解决这个问题: rspecwebservice似乎是正确的,因为我正在“向另一个gem添加功能”。但这将对应于驻留在RSpec::Webservice中的gem,而我不是RSpec的维护者,因此可能会出现命名冲突 rspec

我想创建一个包含自定义rspec匹配器的gem。它们用于测试web服务,所以两个单词部分是RSpec和Webservice。现在,宝石的名称应该是

  • rspecwebservice
  • rspec matchers网站服务
  • rspec\u网络服务
。。。还是别的什么

似乎没有解决这个问题:

rspecwebservice
似乎是正确的,因为我正在“向另一个gem添加功能”。但这将对应于驻留在RSpec::Webservice中的gem,而我不是RSpec的维护者,因此可能会出现命名冲突

rspec matchers-webservice
是一种可能性,因为rspec库本身似乎就是这样

rspec_webservice
是一个安全的选项,因为它将位于自己的根命名空间(RSpecWebservice)中,冲突将被排除,因为rubygems系统将确保此名称不能用于其他gem

所有这些问题都与这样一个RSpec扩展是否会在各种名称空间中运行的问题完全不同


编辑:我得到的一条建议是不要使用这些名称,而是使用非描述性名称。与web服务器类似。例如,在这种情况下,没有标准指南。以下是一些方法:

如果您的gem为现有库提供了额外的特性,那么使用模式
原始特性
是很常见的。值得注意的例子:

  • rspec钢轨
  • net-ssh
  • 防护罩
请注意,此方法还用于将产品拆分为组件

  • rspec匹配器
  • rspec核心
在这种情况下,通常将该特性嵌入到主库名称空间中。正如您所提到的,存在名称冲突的潜在风险

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

rspec\uwebservice
更安全,但并不常见

另一种可能是一个全新的名字,但这可能不是一个明智的选择,尤其是如果你的图书馆有一个非常小的nike,而且很可能会从搜索引擎或RubyGems网站上搜索到它。在您的情况下,我会坚持使用与您扩展的产品相近的名称

总之,我的建议是看看现有的模式,对可能的通用模式有一个想法,然后做出决定
rspec matchers Web服务在我看来是最好的选择

你也可以考虑给RSPEC维护人员写一封信,并征求他们的意见。

< P>参见RuuGeMeSub。

基本上:

  • 对多个单词使用下划线
  • 使用破折号作为扩展名

  • 您可以根据需要混合下划线和破折号。

    没有特别的约定。如果您要创建用于分发的gem,只需确保名称不被采用。我要说的是,肯定有一个惯例:我从Myron Marston那里得到了这样的答复:如果您的库只提供匹配器(而不是其他功能),我建议
    rspec-webservice\u匹配器
    (使用
    RSpec::WebserviceMatchers
    名称空间)。这与最近扩展的gem类似。