Problema con immagine badge mancante

Ciao,

Ho un problema con la sezione delle badge, ho modificato alcune badge e aggiunto alcune immagini; dopo 6 mesi ho ripristinato un backup e tutto funziona bene tranne la sezione delle badge; ho provato ad accedere in modalità sicura e a disabilitare tutti i plugin… ma il problema rimane, come posso ripristinare le sezioni delle badge con nomi e immagini predefiniti?

L’errore che mi viene mostrato è:

Message (2 copies reported)

NoMethodError (undefined method `url' for nil:NilClass)
app/models/badge.rb:306:in `image_url'
(eval):10:in `_fast_attributes'
app/controllers/application_controller.rb:484:in `serialize_data'
app/controllers/badges_controller.rb:30:in `index'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'

Backtrace

app/models/badge.rb:306:in `image_url'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:99:in `block in attribute'
(eval):10:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:89:in `block in _serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `map'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `_serializable_array'

Env

HTTP HOSTS: site.com
1 Mi Piace

Anche altre immagini sono state ripristinate correttamente?

Ti sei assicurato di includere gli upload nel backup?

Stai usando s3 per archiviare i tuoi upload? In caso contrario, potresti accedere al container e andare su /shared/uploads/default/original/1X ci sono file lì?

1 Mi Piace

sì, non uso s3 e ho sempre incluso le immagini degli allegati nel backup…

quello che sto cercando ora è come resettare le immagini dei badge??

Fuori dalla scatola, non c’è modo di “fare il reset per le immagini dei badge” che io conosca.

Quello che farei prima è verificare che i badge a cui mancano le immagini siano stati almeno ripristinati. Se controlli la tabella badges puoi ottenere l’ID dell’immagine nel campo image_upload. Quindi usa quell’ID nella tabella uploads, per ottenere l’URL dell’immagine, così:

select url from uploads where id = <badge-upload-id>

L’URL assomiglia a questo: /uploads/default/original/1X/c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg e da lì, puoi estrarre il nome del file, in questo caso sarebbe c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg

Quindi puoi verificare sul server che l’immagine sia lì con find o qualsiasi altro metodo preferisci

cd /
find . -name c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg

Una volta che hai la certezza che le immagini sono state ripristinate, nel percorso corretto, allora puoi continuare il debug poiché il problema è altrove.

La versione di Discourse dal backup è troppo diversa dalla versione di Discourse in cui stai ripristinando?

Forse qualcun altro nella community ne sa di più, però.

1 Mi Piace

Perfetto, ma come posso conoscere l’URL o il nome del badge mancante?

Non riesco a trovare come conoscere l’URL o il nome dell’immagine del badge mancante.

Segui le istruzioni qui Discourse Data Explorer per installare il plugin Data Explorer, puoi usarlo per ispezionare la tabella dei badge. Concentrati sui tuoi badge personalizzati.

1 Mi Piace

L’ho installato; ma non ho trovato la tabella dei badge;

questo è l’errore che ricevo quando apro il profilo dell’amministratore;

Message

NoMethodError (undefined method `url' for nil:NilClass)
app/models/badge.rb:306:in `image_url'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
app/controllers/users_controller.rb:92:in `block (2 levels) in show'
app/controllers/users_controller.rb:89:in `show'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'

Backtrace

app/models/badge.rb:306:in `image_url'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:99:in `block in attribute'
(eval):10:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:448:in `block in merge_association'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `each'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `merge_association'

Env

HTTP HOSTS: site.com

Ciao @f1r4s
Ho riscontrato lo stesso problema. Sei riuscito a risolvere questo problema?

Credo che questo sia stato risolto in questo argomento:

1 Mi Piace