39

Tworzę rubinowy klejnot i zauważyłem, że nie istnieje (według mojej wiedzy) konwencja nazywania klejnotów. Na przykład, widziałem zarówno:Konwencje nazewnictwa klejnotów Ruby

gem 'foo-bar' 
gem 'foo_bar' 

Czy istnieje jakiś Definitive Guide/konwencji nazewnictwa kamieni Ruby?

+1

możliwy duplikat [Czy należy używać kresek lub podkreślenia przy nazywaniu klejnotem więcej niż jednym słowem?] (Http://stackoverflow.com/questions/4687659/should-one-use-dashes-or-underscores- kiedy-nazywanie-a-gem-z-więcej niż jednym wyrazem) –

Odpowiedz

62

Wersja przerywana jest dla rozszerzeń na innych forach, jak rspec-rails i podkreślenia jest za część normalnego nazwy gem i powinny być camelCased w swoich klasach.

Jeśli masz klejnot o nazwie foo_bar, klasa/moduł powinna mieć nazwę FooBar. Jeśli to klejnot powinien mieć rozszerzenie szynach, które statki jako inny gem należy nazwie foo_bar-rails a moduł powinien być nazywany FooBar::Rails i powinno być wymagane jako require "foo_bar/rails"

Ta konwencja jest również to, co Bundler stara się wymagać.

Prawdą jest, że ta konwencja nie zawsze jest przestrzegana. jquery_rails powinien faktycznie być jquery-rails i factory_girl_rails powinien być nazywany factory_girl-rails. Ale hej, nie wszystko jest idealne.

rubygems docs konwencji:

+5

Jest to wzmocnione przez dokumentację wzorów rubygmatów [tutaj ] (http://guides.rubygems.org/patterns/). – turboladen

+3

[Nazwa twojego klejnotu] (http://guides.rubygems.org/name-your-gem/) – rthbound

+0

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

4

Jedną z korzyści jest konwencja polegająca na zawaleniu się foo_bar na moduł lub klasę FooBar, jeśli chodzi o autoloadery. foo-bar nie ma domyślnego odpowiednika.

Ogólnie wersja podkreślona jest preferowana z perspektywy require, ale wersja przerywana jest bardziej czytelna, więc często się jej używa.

+4

Przerywana wersja jest bardziej czytelna‽ Wydaje mi się to całkowicie błędne, w jakim języku mogą w nim występować identyfikatory? – Nemo157

+0

@ Nemo157 - e.i. w CLIPS. Kiedyś programowałem i posiadanie kresek w identyfikatorach było miłym dodatkiem. Nie trzeba było naciskać , aby uzyskać "_" i można było napisać coś w stylu: fioletowy-cow_painter-module, cat_painter-module (użyłem _ do bardziej osobnych rzeczy niż -) –

5

okazuje się, że to zostanie odebrane dość jasno i zwięźle w rubygems docs: http://guides.rubygems.org/name-your-gem/

(Może to być ostatni dodatek do dokumentu, ponieważ pamiętam, jak szukałem tych informacji w przeszłości i nie mogłem ich znaleźć.)