Falha na atualização de 2.3.2 para 2.3.6 devido ao plugin discourse assign

Quando tento fazer a atualização da versão 2.3.2 para a 2.3.6, vejo este erro:

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)>'
.......................................

Se eu desabilito o plugin discourse-assign, tudo funciona bem…
Mas! Um mês depois, atualizei outro fórum Discourse da versão 2.3.2 para a 2.3.6 e tudo funcionou perfeitamente…
O que estou fazendo de errado?
Tentei:

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

Como você diagnosticou, o problema está com o plugin de atribuição do discord. (você quer dizer discord assign?)

Claro! Desculpe ))) Vou editar…

Aqui está o culpado:
20191119174425_rename_site_setting_assign_emailer.rb

Contém:

# 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

Como posso corrigir isso? Se eu corrigir diretamente neste arquivo, o repositório será baixado novamente quando a reconstrução começar e minhas alterações serão apagadas?

Solução:

  1. Comente o plugin discourse-assign no arquivo app.yml
  2. Reconstrua o aplicativo com ./launcher rebuild app
  3. Entre no contêiner com ./launcher enter app
  4. cd /var/www/discourse/plugins
  5. git clone https://github.com/discourse/discourse-assign.git
  6. Vá para cd /var/www/discourse/plugins/discourse-assign/db/migrate
  7. Edite o arquivo 20191119174425_rename_site_setting_assign_emailer.rb, substituindo ActiveRecord::Migration[6.0] por ActiveRecord::Migration[5.2]
  8. Salve o arquivo e saia do editor
  9. Vá para cd /var/www/discourse
  10. Execute su discourse -c 'bundle exec rake db:migrate'
  11. Saia do contêiner
  12. Descomente o plugin discourse-assign no arquivo app.yml
  13. Reconstrua o aplicativo NOVAMENTE com ./launcher rebuild app
  14. TÁ-DÁ-DÁ-TÁM! Tudo funciona!

Não tenho palavras decentes para descrever esse processo! )))))))))

Obrigado por relatar o problema @nahimov, agora deve estar corrigido sem a necessidade da solução alternativa que você descreveu

cc @dan