Edit: Es sieht so aus, als ob dein Fehler anders war als meiner. Es scheint, als ob einige deiner Bilder nicht auf S3 verschoben wurden. Entschuldigung, ich habe das falsch gelesen. Vielleicht sind einige der Informationen unten trotzdem noch nützlich. Hast du deine S3-Uploads gemäß dieser Anleitung eingerichtet? Configure an S3 compatible object storage provider for uploads
@evenif – Es tut mir leid zu hören, dass du damit Probleme hast. Ich hatte vor, eine Anleitung dafür zu schreiben, da einige Informationen aus verschiedenen Threads zusammengetragen werden mussten. Aber ich warte darauf, hoffentlich die Avatare zu beheben, da ich, wie oben zu sehen, immer noch Probleme damit habe.
Führst du dies in Rails aus, erhältst du dann true oder false?
SiteSetting.migrate_to_new_scheme
Wenn es false ist, kannst du versuchen, es auf true zu setzen, wie folgt:
SiteSetting.migrate_to_new_scheme = true
Dann entweder eine Weile warten und später zurückkehren (ich glaube, dies wird alle 15 Minuten ausgeführt, falls ich mich richtig erinnere), oder wenn du es sofort ausführen möchtest:
Jobs::MigrateUploadScheme.new.execute(nil)
Überprüfe anschließend/später erneut, ob SiteSetting.migrate_to_new_scheme nun false ist (bedeutet, dass es abgeschlossen sein sollte).
Führe dann Folgendes aus:
Upload.by_users.where("url NOT LIKE '//%' AND url NOT LIKE '/uploads/default/original/_X/%'").to_a
Dies sollte Uploads finden, die immer noch Probleme haben und nicht migriert werden konnten. In meinem Fall existierten alle diese Uploads als Datensätze in der Datenbank, aber die eigentlichen Bilder fehlten.
Je nachdem, wie groß die Liste ist, kannst du die Seite kopieren und dann Suchen & Ersetzen verwenden, um eine Liste von Befehlen zu erstellen, um diese problematischen Datensätze über die Liste der Upload-IDs zu entfernen.
Upload.find(1).destroy
Upload.find(2).destroy
Upload.find(3).destroy
Ersetze dabei die Upload-IDs durch 1, 2, 3 usw. Kopiere und füge die gesamte Liste in Rails ein und drücke Enter. Das sollte diese problematischen Datensätze löschen.
Verlasse dann Rails (tippe exit) und alles, was du noch tun musst, ist:
rake posts:rebake
or
rake posts:rebake_uncooked_posts
Uncooked ermöglicht es dir, den Rebake fortzusetzen, falls er fehlschlägt. Ich empfehle einfach den normalen Rebake, es sei denn, du hast eine Menge Uploads.
Dann sollte alles wieder funktionieren, hoffentlich. Es besteht jedoch eine gute Chance, dass deine optimierten Avatare kaputt sind wie bei mir, aber die Originale sollten auf S3 vorhanden sein.
Du kannst überprüfen, ob die Avatare erfolgreich verschoben wurden (zumindest für einige Benutzer), indem du dies in Rails für einen Benutzer ausführst, der ein Standard-Avatar anzeigt:
User.find_by_username('username').uploaded_avatar
Außerdem kannst du prüfen, ob optimierte Versionen existieren, indem du Folgendes verwendest:
OptimizedImage.where(upload_id: upload_id).where(version: 2)