39

我創建了一個紅寶石寶石,我注意到似乎沒有(據我所知)寶石的命名約定。例如,我見過兩個:Ruby寶石命名約定

gem 'foo-bar' 
gem 'foo_bar' 

是否有某種明確的指導/公約對紅寶石寶石的命名?

+1

可能的重複[應該使用破折號或下劃線命名與多個單詞的寶石?](http://stackoverflow.com/questions/4687659/should-one-use-dashes-or-underscores-當命名寶石與多於一個字) –

回答

62

虛線版本是對其他框架的擴展,像rspec-rails和下劃線是正常的寶石名稱的一部分,應該在你的類中駝峯格式。

所以,如果你有一個名爲foo_bar的寶石,類/模塊應命名爲FooBar。如果創業板應該有一個導軌擴展,船舶爲不同的寶石,它應該被稱爲foo_bar-rails和模塊應該被稱爲FooBar::Railsrequire "foo_bar/rails"

這種約定也是什麼捆紮機試圖要求其應符合規定。

不可否認,這個約定並不總是被遵循。 jquery_rails實際上應該是jquery-railsfactory_girl_rails應該叫做factory_girl-rails。但是,嘿,並非一切都是完美的。

RubyGems的約定文檔:

+5

這是由rubygems模式docs [here ](http://guides.rubygems.org/patterns/)。 – turboladen

+3

[爲你的寶石命名](http://guides.rubygems.org/name-your-gem/) – rthbound

+0

https://github.com/rails/jquery-rails;) – Volte

4

就自動加載機而言,其中一個優勢是將foo_bar合併到模塊或FooBar中。 foo-bar沒有默認等值。

通常從require的角度來看,下劃線版本更可取,但虛線版本的確具有更好的可讀性,因此往往會經常使用。

+4

虛線版本更具可讀性它對我來說看起來完全錯了,在哪種語言中標識符可能會破折號? – Nemo157

+0

@ Nemo157 - e.i.在CLIPS中。我曾經在其中編程,並且在標識符中使用破折號是一件好事。你不需要按就可以得到「_」,你可以寫下如下的東西:purple-cow_painter-module,cat_painter-module(我用_來分隔東西比 - ) –