ruby-on-rails - 如何命名依赖于另一个 gem 的 gem ?

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

我想创建一个包含自定义 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) 中,并且会排除冲突,因为 ruby​​gems 系统会确保这个名称不能用于另一个 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/

相关文章:

ruby-on-rails - 每组 Rails LIMIT

ruby-on-rails - 使用 state_machine 进行条件验证

jquery - 从 js.erb 文件中注入(inject) form_for @model?

ruby-on-rails - 有什么方法可以 Hook "controller"生成器,使其运行 "rspec_controller"吗?

asp.net - 为什么 Application_Start 方法会在我的 ASP.NET Web 服务上被多次调用?

ruby-on-rails - Pow 和 rbenv 错误 - "cannot load such file -- bundler/setup"

ruby-on-rails - 使用 Ember 从服务器获取 JSON 数据

ruby-on-rails - 怎样做才能有利润?

c - 开源 C 嵌入式 Web 服务器,支持基于 SOAP/JSON-RPC 的 Web 服务并与 ARM 处理器兼容

web-services - 用于我的 Web 应用程序的药物和 ICD-10 查找 Web 服务