Сбой обновления с 2.3.2 до 2.3.6 из-за плагина assign для Discourse

При попытке обновить с версии 2.3.2 до 2.3.6 я вижу эту ошибку:

I, [2019-12-02T07:43:47.773465 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
ArgumentError: Unknown migration version "6.0"; expected one of "4.2", "5.0", "5.1", "5.2"
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.3/lib/active_record/migration/compatibility.rb:11:in `find'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.3/lib/active_record/migration.rb:536:in `[]'
/var/www/discourse/plugins/discourse-assign/db/migrate/20191119174425_rename_site_setting_assign_emailer.rb:3:in `<top (required)>'
.......................................

Если я отключаю плагин discourse-assign — всё работает нормально…
Но! Через месяц я обновил другой форум Discourse с версии 2.3.2 до 2.3.6 — всё прошло успешно…
Что я делаю не так?
Я пробую:

cd /var/discourse
git pull
./launcher rebuild app

Как вы и диагностировали, проблема в плагине Discord Assign. (Вы имеете в виду Discord Assign?)

Конечно! Извините ))) Сейчас исправлю…

Вот виновник:
20191119174425_rename_site_setting_assign_emailer.rb

Содержит:

# frozen_string_literal: true

class RenameSiteSettingAssignEmailer < ActiveRecord::Migration[6.0]
  def up
    execute "UPDATE site_settings
             SET name = 'assign_mailer', value = '#{AssignMailer.levels[:always]}', data_type = #{SiteSettings::TypeSupervisor.types[:enum]}
             WHERE name = 'assign_mailer_enabled' AND value = 't' AND data_type = #{SiteSettings::TypeSupervisor.types[:enum]}"

    execute "UPDATE site_settings
             SET name = 'assign_mailer', value = '#{AssignMailer.levels[:never]}', data_type = #{SiteSettings::TypeSupervisor.types[:enum]}
             WHERE name = 'assign_mailer_enabled' AND value = 'f' AND data_type = #{SiteSettings::TypeSupervisor.types[:enum]}"
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end

Как мне это исправить? Если я исправлю это напрямую в этом файле, репозиторий будет загружен заново при запуске пересборки, и мои изменения будут удалены?

Решение:

  1. Закомментируйте плагин discourse-assign в файле app.yml.
  2. Пересоберите приложение командой ./launcher rebuild app.
  3. Войдите в контейнер командой ./launcher enter app.
  4. Перейдите в директорию cd /var/www/discourse/plugins.
  5. Выполните git clone https://github.com/discourse/discourse-assign.git.
  6. Перейдите в директорию cd /var/www/discourse/plugins/discourse-assign/db/migrate.
  7. Отредактируйте файл 20191119174425_rename_site_setting_assign_emailer.rb, заменив ActiveRecord::Migration[6.0] на ActiveRecord::Migration[5.2].
  8. Сохраните файл и выйдите из редактора.
  9. Перейдите в директорию cd /var/www/discourse.
  10. Выполните su discourse -c 'bundle exec rake db:migrate'.
  11. Выйдите из контейнера.
  12. Раскомментируйте плагин discourse-assign в файле app.yml.
  13. Пересоберите приложение СНОВА командой ./launcher rebuild app.
  14. ТА-ДА-ДА-ТАМ! Всё работает!

У меня нет слов, чтобы описать этот процесс! )))))))))

Спасибо за сообщение об ошибке @nahimov, проблема теперь исправлена, и обходной путь, который вы описали, больше не требуется

cc @dan