Заявка: обновили ос...
 
Уведомления
Очистить всё

Заявка: обновили основной сервис до Rails 8.1 за два спринта, что ломалось

4 Сообщения
4 Пользователи
14 Реакции
246 Просмотры
Егор64
Сообщения: 30
Автор темы
Читает чужие PR тимлид
Присоединился: 3 года назад
[#100]

Заявка на декабрьскую встречу, 15 минут. Мы начали переводить основной сервис с 8.0 на 8.1 ещё с беты, а через неделю после релиза выкатили на прод, всего вышло два спринта вместе с ревью. Что расскажу: как сначала довели deprecation-предупреждения на 8.0 до нуля и только потом меняли версию, какой gem для пагинации пришлось ждать неделю, почему первый же db:migrate перегенерировал schema.rb с колонками по алфавиту и дал диф на три тысячи строк. И отдельно про продолжения в Active Job, ради них и затевали обновление: импорт заказов теперь переживает деплой посреди работы и продолжает с того места, где остановился.

class ImportOrdersJob < ApplicationJob
  include ActiveJob::Continuable

  def perform(import_id)
    import = Import.find(import_id)

    step :download do
      import.download!
    end

    step :process do |step|
      import.rows.find_each(start: step.cursor) do |row|
        Orders::Upsert.call(row)
        step.advance! from: row.id
      end
    end
  end
end

Порядок шагов брали из гайда по обновлению: https://guides.rubyonrails.org/upgrading_ruby_on_rails.html


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

Про schema.rb с колонками по алфавиту обязательно пару минут: многие увидят этот диф в первом же PR и испугаются, что миграция что-то поломала. И я бы послушал, как вы проверяли, что импорт действительно продолжается после деплоя, а не начинается заново.


Ответ
georgiy_efi
Сообщения: 7
Разобрался с блоками middle-разработчик
Присоединился: 1 год назад

Continuations уже на проде или пока на стейдже? Интересно, как ведёт себя шаг, если воркер убили не по сигналу, а по памяти


Ответ
vova64
Сообщения: 23
Собрал свой gem фрилансер
Присоединился: 4 года назад

Для старых проектов это пока фантастика, там бы до 7.2 доползти. Но послушаю: хочу понять, сколько закладывать в оценку на мажорное обновление, когда тесты нормальные. Обычно называют неделю на версию, а выходит две.


Ответ