Соглашения о наименовании драгоценных камней в Ruby - PullRequest
40 голосов
/ 22 января 2012

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

gem 'foo-bar'
gem 'foo_bar'

Существует ли какое-то определенное руководство / соглашение по именованию рубиновых камней?

Ответы [ 4 ]

66 голосов
/ 22 января 2012

Штриховая версия предназначена для расширений в других платформах, например rspec-rails, а подчеркивание - для части обычного имени гема, и оно должно быть указано в ваших классах.

Так что если у вас есть гем с именем foo_bar, класс / модуль должен иметь имя FooBar.Если этот драгоценный камень должен иметь расширение рельсов, которое поставляется как другой драгоценный камень, он должен называться foo_bar-rails, а модуль должен называться FooBar::Rails, и он должен быть указан как require "foo_bar/rails"

Это соглашение такжето, что пытается потребовать Bundler.

Правда, это соглашение не всегда соблюдается.jquery_rails на самом деле должно быть jquery-rails, а factory_girl_rails должно называться factory_girl-rails.Но, эй, не все идеально.

Документы RubyGems для конвенций:

5 голосов
/ 21 августа 2013

Оказывается, что на документы rubygems на этот вопрос довольно четко и кратко ответили: http://guides.rubygems.org/name-your-gem/

(Это может быть недавним дополнением к документу, потому что я вспоминаю, что искал эту информацию в прошлом и не нашел ее.)

4 голосов
/ 22 января 2012

По рекомендации @svenfuchs:

  • подчеркивание => верблюжий
  • дефис => имя :: пробел

https://twitter.com/svenfuchs/status/135773593526206464

Но это правда, что я все еще вижу несогласованное поведение, такое как:

gem 'my_gem`, :require => 'my-gem'

https://twitter.com/#!/svenfuchs/status/135784542819713024

4 голосов
/ 22 января 2012

Единственным преимуществом является соглашение об объединении foo_bar в модуль или класс FooBar в отношении автозагрузчиков. foo-bar не имеет эквивалента по умолчанию.

Обычно версия с подчеркиванием предпочтительнее с точки зрения require, но пунктирная версия выглядит более читабельной, поэтому она часто используется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...