2012-06-07 4 views
1

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

Я понимаю, как yank версия для драгоценных камней, а также общее решение просто напугать номер версии и опубликовать ее, что имеет смысл в большинстве случаев. Тем не менее, это не так просто в моем случае, поскольку я хотел бы использовать ту же самую версию gem, что и драйвер базы данных, который я связываю (что, похоже, является обычной практикой), поэтому назойливание номера версии не является вариантом. Я также не могу сделать что-то умное, как добавление суффикса .1 к номеру версии базы данных, поскольку версия базы данных имеет в нем символы алфавита, которые делают непригодным для оператора ~> (все версии рассматриваются как предварительные выпуски). Короче говоря, I необходимо этот точный номер версии.

Мой вопрос, если я дергать все версии из камня так, что имя камень снова доступен в имени пула RubyGems, можно повторно претендовать на название гем и нажмите другой код против одних и тех же версий гем я использовал ранее?

+0

Я бы не стал беспокоиться о соответствии версии драйвера вашей версии gem. Возможно, основные версии могут соответствовать, но в целом это просто вызовет проблемы. Что делать, если вы хотите выпустить за пределами своего расписания? Как вы сообщаете пользователям об изменениях (обычно, при изменении основной версии)? Это всегда зависит от вас, но я бы избегал этого. – Travis

+0

Да, это определенно липкая проблема. Обертка мертва проста (на самом деле это просто требует, чтобы загружать файлы .jar, потому что драйвер является собственностью), поэтому, как только я готов выпустить публикацию, ее действительно не нужно менять из-за чрезвычайной ситуации или что-то в этом роде. В следующий раз я буду тестировать еще до публикации в RubyGems. –

ответ

1

Вы не можете заменить драгоценный камень, извините. Вы должны представить новую версию.

+0

Мой эксперимент, похоже, подтверждает это. –

3

Предотвращение модификации драгоценных камней является частью дизайна RubyGems.org. RubyGems на компьютере пользователя будут кэшировать оригинальные файлы gem, поэтому, если вы дважды запустите gem install, поведение может быть непротиворечивым, если исходный камень был изменен на RubyGems.org, но старая версия хранится в кеше. Таким образом, единственное, что вы можете сделать, это yank или связаться с командой RubyGems.org, чтобы сделать для вас исключение.

Когда мы сделали обертки, как вы предложили, мы добавили еще один суффикс .1, чтобы различать различные сборки, которые обертывают определенную версию библиотеки.

Смежные вопросы