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