2011-01-14 8 views
55

Nie mam pojęcia, co to jest konwencja nazw klejnotów, gdy nazwa klejnotu zawiera więcej niż jedno słowo.Czy podczas nazywania klejnotem więcej niż jednym słowem należy używać kresek lub podkreśleń?

  • myślenie-sfinks to nazwa gem, ale plik .rb podstawa * dla tego klejnotu jest lib/thinking_sphinx.rb (podkreślenia)

  • akty-as-taggable-on jest nazwa gem, a .rb pliku * baza jest nazywany lib/akty-as-taggable-on.rb (myślniki)

  • factory_girl wykorzystuje podkreślenia zarówno nazwą gem iw imieniu podstawy * Plik .rb

Czy ma znaczenie, jeśli używasz podkreśleń lub łączników? Czy pojawia się tu jakikolwiek konsensus?

Odpowiedz

50

Eric Hodel ma blogu na ten temat: A Project Naming Recommendation

Szyny zestalony konwencję nazw mapowania klasy CamelCase do podkreślonego nazw plików (klasa IMAPProcesor jest zdefiniowana w imap_processor.rb). Korzystanie z podkreślonych nazw klejnotów ułatwia ludziom uzyskanie informacji o tym, jakiego pliku należy wymagać (tej samej jako nazwy projektu) lub o nazwie klasy, której nazwa będzie szukać w ri.

Jeśli posiadam klejnot wtyczki lub rozszerzenie , przypisuję myślnikowi nazwę pod-projektu za pomocą myślnika. Jeśli chciałem dodać nową wiadomość e-mail o numerze dla wiadomości e-mail Chase banku , klejnot będzie miał nazwę imap_to_rss-chase.

+4

to consistene z reccommendation umieszczanych w Ruby Gems przewodników - [Zgodnie nazewnictwa] (http://guides.rubygems.org/patterns/#consistent-naming). – stevenharman

+0

Co z yajl-ruby lub bcrypt-ruby, które są owijkami Ruby dla istniejących bibliotek C? Chcę, żeby proste wymagało "bcrypt" w moim kodzie, ale nie chcę nazwać mojego projektu github "yajl" lub "bcrypt", ponieważ te (być może) są już zrobione dla oryginalnych bibliotek C. – dubek

+1

Ten link do artykułu Eric Hodel jest już martwy. Próbowałem znaleźć to w Internecie, ale po 3 minutach Google nie udało się tego zrobić. – gardenofwine

23

Postępując zgodnie z poradą here, poniżej przedstawiono tabelę przedstawiającą sposób postępowania awarii.

|  Gem name  | Require statement   | Main class or module | 
|:--------------------|:-----------------------------|:----------------------| 
|fancy_require  |require 'fancy_require'  | FancyRequire   | 
|ruby_parser   |require 'ruby_parser'   | RubyParser   | 
|net-http-persistent |require 'net/http/persistent' | Net::HTTP::Persistent | 
|rdoc-data   |require 'rdoc/data'   | RDoc::Data   | 
|autotest-growl  |require 'autotest/growl'  | Autotest::Growl  | 
|net-http-digest_auth |require 'net/http/digest_auth'| Net::HTTP::DigestAuth | 
+0

Stworzyłem klejnot o nazwie tout_suite, ale nadal musiałem go wymagać za pomocą 'require 'tout/suite''. Jakieś pomysły, dlaczego? Używam ruby ​​2.0 i szyn 4.1.1 – gardenofwine

+0

@gardenofwine, Jaka była główna klasa lub moduł? Jak wyglądała struktura plików twojego klejnotu? Te rzeczy narzucają nazwę klejnotu "powinien", a nie na odwrót. – Intentss

+1

To mi się po prostu przydało. Stworzyłem klejnot o nazwie calabash-shared i musiałem wymagać "calabash/shared" - przeczytaj ten artykuł o tworzeniu klejnotów http://www.smashingmagazine.com/2014/04/08/how -to-build-a-ruby-gem-with-bundler-test-driven-development-travis-ci-and-coveralls-oh-my / –

Powiązane problemy