Выложил первый gem ...
 
Уведомления
Очистить всё

Выложил первый gem и через неделю сломал людям скрипты. Про версии

5 Сообщения
4 Пользователи
0 Реакции
782 Просмотры
kirill_spb
Сообщения: 27
Автор темы
Собрал свой gem разработчик инструментов
Присоединился: 4 года назад
[#2]

Написал небольшой gem, который режет большие CSV на куски по числу строк, командная строка на Thor, Ruby 3.1. Выложил 1.0.0 и радовался. Через неделю переименовал опцию --rows в --lines, выпустил 1.1.0, и у двоих знакомых, у которых в кроне стоял gem install без версии, утром упали скрипты. Сам виноват: по семантическому версионированию это ломающее изменение, и номер должен был быть 2.0.0. Gemspec сейчас такой:

require_relative "lib/csv_nareska/version"

Gem::Specification.new do |spec|
  spec.name        = "csv_nareska"
  spec.version     = CsvNareska::VERSION
  spec.summary     = "Режет большие CSV на части по числу строк"
  spec.authors     = ["kirill_spb"]
  spec.license     = "MIT"
  spec.files       = Dir["lib/**/*.rb", "exe/*", "README.md", "LICENSE.txt"]
  spec.bindir      = "exe"
  spec.executables = ["csv_nareska"]
  spec.required_ruby_version = ">= 3.0"

  spec.add_dependency "thor", "~> 1.2"
end

Как вы переименовываете опции мягко, чтобы старое имя ещё пожило? И есть ли смысл выпускать 1.1.1, которая вернёт --rows?


4 ответа
kostya.sokurov
Сообщения: 73
Держит прод бэкенд-разработчик, senior
Присоединился: 4 года назад

1.1.1 с возвратом --rows имеет смысл, это как раз исправление ошибки. В Thor у опции есть aliases: option :lines, type: :numeric, aliases: "--rows", и старое имя продолжит работать. В CHANGELOG пишете, что в 2.0 его уберёте, и через пару месяцев спокойно убираете.


Ответ
armen_pet
Сообщения: 30
Собрал свой gem DevOps-инженер
Присоединился: 4 года назад

и в кроне всегда фиксированная версия, gem install csv_nareska -v 1.0.0. это не тебе, это знакомым передай


Ответ
karina_sor
Сообщения: 6
Дружит с bundler бэкенд-разработчица
Присоединился: 4 года назад

А CHANGELOG ведёшь? Когда я обновляю чужие gem'ы, первым делом смотрю туда. Если там написано BREAKING, хотя бы понятно, что сломается


Ответ
kirill_spb
Сообщения: 27
Автор темы
Собрал свой gem разработчик инструментов
Присоединился: 4 года назад

Выпустил 1.1.1, --rows снова работает как алиас. CHANGELOG завёл, раньше не вёл, стыдно. Заодно узнал, что в gemspec есть spec.metadata["changelog_uri"], и страница gem'а на https://rubygems.org показывает эту ссылку рядом с описанием. 2.0.0 выпущу, когда наберётся ещё что-то ломающее, а пока держу обе опции.


Ответ