2011-01-14 4 views
55

Я смущен тем, что означает соглашение об именах драгоценных камней, когда имя драгоценного камня имеет более одного слова.Следует ли использовать тире или подчеркивания при назначении драгоценного камня более чем одним словом?

  • мышление-сфинкс название драгоценного камня, но база * .rb файл для этого самоцвета Библиотеки/thinking_sphinx.rb (подчеркивание)

  • актов-как-taggable-на являются имя жемчужины, а базовый файл * .rb называется lib/actions-as-taggable-on.rb (дефисы)

  • factory_girl использует символ подчеркивания как в имени драгоценного камня, так и в названии базы * .rb

Имеет ли значение, если использовать символы подчеркивания или дефисы? Существует ли какой-либо новый консенсус здесь?

ответ

50

Эрик Hodel имеет пост в блоге на этом: A Project Naming Recommendation

Rails затвердевает соглашение имен классов CamelCase отображения на подчеркнутые имена файлов (класс IMAPProcesor определяется в imap_processor.rb). Использование подчеркнутых имен gem облегчает для людей выяснить, какой файл требуется (то же самое как имя проекта) или какой класс имя искать в ri.

Если у меня есть плагин или добавочный номер Я возьмусь за имя подпроекта с тире. Если бы я захотел добавить новый обработчик для imap_to_rss для электронной почты Chase bank , то драгоценный камень будет называться imap_to_rss-chase.

+4

Это consistene с reccommendation приведен в официальном Ruby Gems Guides - [Последовательное именование] (http://guides.rubygems.org/patterns/#consistent-naming). – stevenharman

+0

Как насчет yajl-ruby или bcrypt-ruby, которые являются оболочками Ruby для существующих библиотек C? Я хочу, чтобы в моем коде просто требовалось «bcrypt», но я не хочу называть проект gytub «yajl» или «bcrypt», потому что эти (возможно) уже взяты для исходных библиотек C. – dubek

+1

Ссылка на статью Эрика Ходеля теперь мертва. Я пытался найти его в Интернете, но после 3 минут в Google этого не удалось. – gardenofwine

23

Следуя советам here, вот таблица того, как все сломается.

|  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

Я создал драгоценный камень с именем tout_suite, но мне все же пришлось потребовать его с 'require 'tout/suite''. Любые идеи почему? Я использую ruby ​​2.0 и rails 4.1.1 – gardenofwine

+0

@gardenofwine, Каким был основной класс или модуль? Как выглядела файловая структура вашего драгоценного камня? Эти вещи диктуют то, что должен быть назван жемчужиной, а не наоборот. – Intentss

+1

Это просто сработало для меня .. Я создал драгоценный камень под названием calabash-shared, и мне пришлось требовать «calabash/shared» - проверить эту статью для создания драгоценных камней http://www.smashingmagazine.com/2014/04/08/how -в-Построй-рубиновый камень-с-пакетирования-тесты-развитие-Travis-CI-и-комбинезоны-о-мой / –

Смежные вопросы