Подтвердить что ты не робот

Соглашения о присвоении имен в Ruby gem

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

gem 'foo-bar'
gem 'foo_bar'

Есть ли какое-то окончательное руководство/конвенция для обозначения рубиновых камней?

4b9b3361

Ответ 1

Пунктирная версия предназначена для расширений на других фреймворках, таких как 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:

Ответ 2

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

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

Ответ 3

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

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