Ich verschiebe eine bestehende Website vom lokalen Speichern von Uploads zum Speichern in S3, indem ich dieser Anleitung folge. Alle neuen Uploads funktionieren einwandfrei, ich habe manuell überprüft, dass sie in S3 angezeigt werden. Wenn ich jedoch versuche, rake uploads:migrate_to_s3 auszuführen, erhalte ich die folgende Ausgabe:
Bitte beachten Sie, dass die Migration zu S3 derzeit nicht rückgängig gemacht werden kann!
[CTRL+c] zum Abbrechen, [ENTER] zum Fortfahren
Migriere Uploads zu S3 für 'default'...
Einige Uploads wurden nicht in das neue Schema migriert. Führe die Migration aus, dies kann eine Weile dauern...
rake aborted!
FileStore::ToS3MigrationError: Einige Uploads konnten nicht in das neue Schema migriert werden. Sie müssen dies manuell beheben.
/var/www/discourse/lib/file_store/to_s3_migration.rb:162:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:65:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:127:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:106:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:90:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:104:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:100:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3
(Siehe vollständigen Trace, indem Sie die Aufgabe mit --trace ausführen)
Wenn ich in die Datei schaue, in der der Fehler auftritt, lib/file_store/to_s3_migration.rb, sehe ich, dass dort eine Prüfung gegen die uploads-Tabelle für Zeilen durchgeführt wird, bei denen url NOT LIKE '//%' AND url NOT LIKE '/%#{seeded_image_url}%'. In meinem Fall nehme ich an, dass seeded_image_url zu uploads/default/original/_X/ aufgelöst wird.
Ich habe die gleiche Prüfung manuell gegen die Datenbank ausgeführt und Folgendes gefunden:
Die unteren beiden sind mir egal, ich vermute, das sind nur zufällige Artefakte des Wechsels – wenn sie keine
url haben, weiß die Website vermutlich nicht, wo sie zu finden sind, sodass sie sicher entfernt werden können. Ich mache mir mehr Sorgen um die Logos. Dies sind die Standardlogos, die wir tatsächlich immer noch verwenden, die aber mit dem Codebase verteilt und nicht hochgeladen werden.
Ist es sicher, eine dritte Bedingung in to_s3_migration.rb, Zeile 146, hinzuzufügen, die auch Uploads ignoriert, bei denen die URL-Spalte mit /images/ beginnt? Oder sollte ich diese Zeilen einfach löschen, da diese Dateien jetzt separat von Uploads behandelt werden und dies nur ein Artefakt einer älteren Version von Discourse ist? Oder habe ich missverstanden, was die Aufgabe tut (bin nicht sehr vertraut mit Rails) und das Problem ist etwas anderes?
