Очень изменился с выпуском Bundler? Существует ли шаблон, который может использоваться в качестве основы? Каковы лучшие практики?
Некоторые сообщения, которые я нашел полезными:
Правка (2012-01-10): Отличное всестороннее руководство по передовым методам работы с гемами - это Руководства по RubyGems . Я очень рекомендую начать здесь сейчас.
Подводя итог ключевым моментам:
lib / gem.rb
и lib / gem /
для кода. bin
, любые файлы данных в data
и тесты в test
или spec
. требует
и не зависит от файлов вне пути загрузки.( ВЕРСИЯ
файлы часто находятся в странных местах в драгоценных камнях.) требуют 'rubygems'
. $ LOAD_PATH
. require File.join (__ FILE__, 'foo', 'bar')
, значит, вы делаете это неправильно. При написании толстых (двоичных) драгоценных камней структура обычно следующая:
lib / 1.8 / binary.so
lib / 1.9 / binary.so
lib / my_gem. rb
(этот файл просто выбирает, какой binary.so
загружать, в зависимости от версии ruby)
И для собственных расширений:
lib / ext / my_gem / my_sources. *
lib /my_gem.rb
Я также обычно помещаю сюда файл version.rb
:
lib / my_gem / version.rb
, и он просто содержит что-то вроде:
module MyGem
VERSION = "0.1.0"
end
Кроме того, IMO , не помещайте никакие файлы .rb , кроме файла, который вы хотите использовать для загрузки драгоценного камня, в каталог lib /
. Вместо этого поместите все вспомогательные файлы в lib / my_gem /
Совет Телемаха хорош. Если вы последуете ему, ваш гем будет настроен так, чтобы нормально работать с бандлером.
Вы также можете попробовать воспользоваться услугами ювелира. Это драгоценный камень, который создает скелеты из драгоценных камней. Скелет по умолчанию, который он выплевывает, соответствует всем соглашениям, упомянутым Telemachus, и он также будет делать некоторые приятные вещи, например, добавлять вашу любимую тестовую среду или создавать репозиторий GitHub.