Problema com imagem de distintivo ausente

Olá,

Tenho um problema com a seção de distintivos. Modifiquei alguns distintivos e adicionei algumas imagens lá; após 6 meses, restaurei um backup e tudo funciona bem, exceto a seção de distintivos. Tentei fazer login com modo de segurança e desativei todos os plugins… mas o problema continua o mesmo. Como posso restaurar as seções de distintivos com o nome e as imagens padrão?

O erro que aparece é:

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/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 curtida

Outras imagens foram restauradas corretamente?

Você se certificou de incluir os uploads no backup?

Você está usando s3 para armazenar seus uploads? Se não, você poderia entrar no contêiner e ir para /shared/uploads/default/original/1X você tem arquivos lá?

1 curtida

sim, eu não uso s3, e sempre incluí imagens anexadas no backup…
o que estou procurando agora é como fazer uma redefinição para as imagens de emblema??

Por padrão, não há como “fazer reset para imagens de distintivos” que eu saiba.

O que eu faria primeiro é verificar se os distintivos que não têm imagens foram pelo menos restaurados. Se você verificar a tabela badges, pode obter o ID da imagem no campo image_upload. Em seguida, use esse ID na tabela uploads para obter o URL da imagem, assim:

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

O URL se parece com isto: /uploads/default/original/1X/c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg e a partir daí, você pode extrair o nome do arquivo, neste caso seria c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg

Então você pode verificar no servidor se a imagem está lá com find ou qualquer método que preferir

cd /
find . -name c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg

Depois de ter certeza de que as imagens foram restauradas, no caminho certo, você pode continuar depurando, pois o problema está em outro lugar.

A versão do Discourse do backup é muito diferente da versão do Discourse para a qual você está restaurando?

Talvez outra pessoa na comunidade saiba mais sobre isso, no entanto.

1 curtida

Perfeito, mas como posso saber a URL ou o nome do emblema ausente?

Não consigo encontrar como saber a URL ou o nome da imagem do emblema ausente.

Siga as instruções em Discourse Data Explorer para instalar o plugin Data Explorer, você pode usá-lo para inspecionar a tabela de badges. Concentre-se em seus badges personalizados.

1 curtida

Eu instalei; mas não encontrei a tabela de distintivos;

este é o erro que recebo ao abrir o perfil do administrador;

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

Olá @f1r4s
Eu enfrentei o mesmo problema. Você conseguiu resolver este problema?

Acredito que isso foi resolvido neste tópico:

1 curtida