Упаковка драгоценных камней: лучшие практики дает множество советов, некоторые из которых включают
Не загрязнять путь глобальной загрузки. В идеале, в каталоге lib
должно быть только foo.rb
, а все остальные файлы - в lib/foo
.
Не require
файлы с использованием __FILE__
.
Не полагайтесь ни на что вне пути загрузки. Папки могут иметь ту же структуру, что и в исходной версии. Например, не используйте что-то вроде
VERSION = :: File.read (:: File.join (:: File.dirname ( FILE ), "..", "..", "VERSION")). Strip
Не удается $LOAD_PATH
в течение lib
.
Укажите VERSION
константу.
Не зависит от рубинов. Человек, использующий ваш код, может использовать не рубины, а какую-то другую упаковочную систему (или не упаковочную систему). Аналогично, не упоминайте зависимости версий в самом коде или rescue Gem::LoadError
.
Зависимости Rubygems. Пожалуйста ... утверждает, что вы не должны перечислять необязательные зависимости времени выполнения и должны отделить разработчика от зависимостей времени выполнения.
Из моего собственного опыта : если ничего другого, попробуйте собрать и установить свой камень локально, прежде чем выпустить его в дикую природу. Избегает выпусков коричневых бумажных пакетов.