Upgrade von 2.3.2 auf 2.3.6 aufgrund des Discourse Assign-Plugins fehlgeschlagen

Wenn ich versuche, von 2.3.2 auf 2.3.6 zu aktualisieren, erscheint dieser Fehler:

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

Wenn ich das discourse-assign-Plugin deaktiviere, funktioniert alles einwandfrei……
Aber! Einen Monat später habe ich ein weiteres Discourse-Forum von 2.3.2 auf 2.3.6 aktualisiert – alles lief problemlos……
Was mache ich falsch?
Ich habe Folgendes versucht:

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

Wie Sie festgestellt haben, liegt das Problem beim Discord-Zuweisungs-Plugin. (Meinen Sie Discord-Zuweisung?)

natürlich! Entschuldigung ))) werde ich ändern…

Hier ist der Schuldige:
20191119174425_rename_site_setting_assign_emailer.rb

Enthält:

# 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

Wie kann ich das beheben? Wenn ich es direkt in dieser Datei korrigiere, wird das Repository beim Neustart des Builds erneut heruntergeladen und meine Änderungen verworfen?

Lösung:

  1. Plugin discourse-assing in app.yml auskommentieren
  2. App mit ./launcher rebuild app neu erstellen
  3. In den Container wechseln: ./launcher enter app
  4. cd /var/www/discourse/plugins
  5. git clone https://github.com/discourse/discourse-assign.git
  6. Zu cd /var/www/discourse/plugins/discourse-assign/db/migrate wechseln
  7. Datei 20191119174425_rename_site_setting_assign_emailer.rb bearbeiten und ActiveRecord::Migration[6.0] durch ActiveRecord::Migration[5.2] ersetzen
  8. Datei speichern und Editor schließen
  9. Zu cd /var/www/discourse wechseln
  10. su discourse -c 'bundle exec rake db:migrate' ausführen
  11. Container verlassen
  12. Plugin discourse-assign in app.yml wieder einfügen (auskommentieren rückgängig machen)
  13. App NOCHMAL mit ./launcher rebuild app neu erstellen
  14. TADAAAM! Alles funktioniert!

Ich habe keine passenden Worte, um diesen Prozess zu beschreiben! )))))))))

Danke für die Meldung des Problems @nahimov, es sollte jetzt behoben sein, ohne dass der von dir beschriebene Workaround erforderlich ist.

cc @dan