Migrazione verso S3 fallisce durante il Rebake

Modifica: Sembra che il tuo errore fosse diverso dal mio; sembra che alcune delle tue immagini non siano state spostate su S3. Scusa, ho letto male. Forse alcune delle informazioni qui sotto sono ancora utili. Hai configurato i tuoi upload su S3 seguendo questa guida? Configure an S3 compatible object storage provider for uploads

@evenif - Mi dispiace sapere che stai riscontrando problemi con questo. Avevo intenzione di scrivere una guida per chi incontra gli stessi problemi, dato che è stato necessario raccogliere molte informazioni da diversi thread. Ma sto aspettando di risolvere il problema degli avatar, come puoi vedere sopra, poiché ho ancora difficoltà con quelli.

Se esegui questo comando in Rails, ottieni true o false?

SiteSetting.migrate_to_new_scheme

Se è false, puoi provare a impostarlo su true in questo modo:

SiteSetting.migrate_to_new_scheme = true

Poi puoi attendere un po’ e tornare più tardi (credo che questo venga eseguito ogni 15 minuti, se non sbaglio), ma se vuoi eseguirlo immediatamente:

Jobs::MigrateUploadScheme.new.execute(nil)

Quindi controlla di nuovo dopo/un po’ più tardi se SiteSetting.migrate_to_new_scheme è ora false (significa che dovrebbe essere completato).

Poi esegui:
Upload.by_users.where("url NOT LIKE '//%' AND url NOT LIKE '/uploads/default/original/_X/%'").to_a

Questo dovrebbe trovare gli upload che hanno ancora problemi e non sono stati migrati. Nel mio caso, tutti questi upload esistevano come record nel database, ma le immagini reali non esistevano.

A seconda di quanto è lunga la lista, puoi copiare la pagina e poi usare trova e sostituisci per creare una lista di comandi per rimuovere questi record problematici tramite gli ID degli upload.

Upload.find(1).destroy
Upload.find(2).destroy
Upload.find(3).destroy

Sostituendo 1, 2, 3, ecc. con gli ID degli upload. Copia e incolla l’intera lista in Rails e premi Invio. Questo dovrebbe eliminare questi record problematici.

Quindi, esci da Rails (digita exit) e tutto quello che dovresti fare è eseguire:

rake posts:rebake
o
rake posts:rebake_uncooked_posts

rebake_uncooked ti permette di riprendere il processo se fallisce. Ti consiglio di usare semplicemente rebake normale a meno che tu non abbia un’enorme quantità di upload.

Poi tutto dovrebbe funzionare correttamente, speriamo. Ma c’è una buona probabilità che le tue miniature degli avatar siano rotte come le mie, anche se gli originali dovrebbero esistere su S3.

Puoi verificare se gli avatar sono stati spostati con successo (o almeno per alcuni utenti) eseguendo questo comando in Rails per un utente che mostra un avatar predefinito:
User.find_by_username('username').uploaded_avatar

Puoi anche verificare se esistono le versioni ottimizzate usando questo comando:
OptimizedImage.where(upload_id: upload_id).where(version: 2)