2014-01-05 65 views
2

我想創建一個包含自定義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。

所有這些問題都與這樣一個RSpec擴展是否會在各種命名空間中運行甚至是完全分離。

編輯:我得到的一條建議是不去與任何這些,而是​​拿出一個非描述性的名字。類似於乘客的Web服務器。例如。 rspec-dogweather

+0

沒有特別的約定。如果你正在創建發行版的gem,只要確保名稱不在[RubyGems](http://rubygems.org)上。 – zeantsoi

+2

我想說肯定有一個約定:http://guides.rubygems.org/name-your-gem/ – Dogweather

回答

1

在這種情況下沒有標準指導原則。以下是一些方法:

如果您的gem爲現有庫提供了額外功能,則使用original-feature這種模式非常常見。著名的例子:

  • RSpec的護欄
  • 淨SSH
  • 護rspec的

注意,這種方法也可用於將產品拆分成組件

  • rspec的 - 射手
  • rspec-core

在這種情況下,通常將功能嵌入到主庫命名空間中。正如你所提到的,名稱衝突有潛在的風險。

rspec-matchers-webservice這是一個選擇,但我沒有看到rspec-matchers「組件」。這不會阻止你使用這樣的選擇。我看到其他庫使用不同的順序,如rspec-html-matchers,但我認爲rspec-matchers-foo更好。

rspec_webservice更安全,但不是很常見。

另一種可能性是一個全新的名字,但這可能不是一個明智的選擇,特別是如果你的圖書館有一個非常小的耐克,並且很可能從在搜索引擎或RubyGems網站上搜索的人中找到。在你的情況下,我會堅持一個名字接近你延伸的產品。

總之,我的建議是看看現有的rspec extensions,以瞭解可能的常見模式並做出決定。 rspec-matchers-webservice在我看來是最好的選擇。

您也可以考慮寫信給RSpec維護人員並向他們提出建議。

+0

我從Myron Marston那裏得到了這個回覆:如果你的圖書館只是爲了提供匹配(而不是其他功能) ,我推薦'rspec-webservice_matchers'(帶'RSpec :: WebserviceMatchers'命名空間)。這與最近提供的https://github.com/rspec/rspec-collection_matchers gem相似。 – Dogweather

+0

很酷,感謝您分享回覆。 –

0

請參閱RubyGems指南中的Name your gem

基本上是:

  1. 使用下劃線多個單詞
  2. 用於擴展

您可以根據需要混用下劃線和破折號使用破折號。