Olá, temos enfrentado um bug muito desagradável ultimamente que quebrou todo o nosso site, sem uma saída aparentemente viável. Tentamos de tudo, desde reconstruir até remover/adicionar plugins, sem sucesso. Temos um backup funcional de alguns meses atrás, mas parece que qualquer tentativa de reconstruir isso com uma versão mais recente simplesmente quebra o site.
A mensagem principal exibida diz:
Oops
O software que alimenta este fórum de discussão encontrou um problema inesperado. Pedimos desculpas pelo inconveniente.
Informações detalhadas sobre o erro foram registradas e uma notificação automática gerada. Daremos uma olhada.
Nenhuma ação adicional é necessária. No entanto, se a condição de erro persistir, você pode fornecer detalhes adicionais, incluindo os passos para reproduzir o erro, postando um tópico de discussão na categoria de feedback do site.
Esta é uma mensagem de erro genérica do Discourse que não produz resultados reais ao solucionar problemas. Verificando os logs do nosso docker, consegui encontrar isto:
Completed 500 Internal Server Error in 152ms (ActiveRecord: 0.0ms | Allocations: 17980)
ActionView::Template::Error (undefined method `[]' for nil:NilClass)
lib/svg_sprite/svg_sprite.rb:502:in `block in custom_icons'
lib/svg_sprite/svg_sprite.rb:500:in `each'
lib/svg_sprite/svg_sprite.rb:500:in `custom_icons'
lib/svg_sprite/svg_sprite.rb:275:in `block in all_icons'
lib/distributed_cache.rb:25:in `defer_get_set'
lib/svg_sprite/svg_sprite.rb:517:in `get_set_cache'
lib/svg_sprite/svg_sprite.rb:268:in `all_icons'
lib/svg_sprite/svg_sprite.rb:337:in `bundle'
lib/svg_sprite/svg_sprite.rb:285:in `block in version'
lib/distributed_cache.rb:25:in `defer_get_set'
lib/svg_sprite/svg_sprite.rb:517:in `get_set_cache'
lib/svg_sprite/svg_sprite.rb:284:in `version'
lib/svg_sprite/svg_sprite.rb:290:in `path'
app/helpers/application_helper.rb:586:in `client_side_setup_data'
app/views/layouts/application.html.erb:61
lib/topic_list_responder.rb:13:in `block (2 levels) in respond_with_list'
lib/topic_list_responder.rb:9:in `respond_with_list'
app/controllers/list_controller.rb:103:in `block (2 levels) in <class:ListController>'
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'
Então, naturalmente, pensei que poderia corrigir o problema simplesmente implementando um try/catch na linha 501, onde ocorre o erro. Este é o método em questão:
def self.custom_icons(theme_id)
# Automatically register icons in sprites added via themes or plugins
icons = []
custom_svg_sprites(theme_id).each do |item|
begin
svg_file = Nokogiri::XML(item[:sprite])
svg_file.css('symbol').each do |sym|
icons << sym.attributes['id'].value if sym.attributes['id'].present?
end
rescue Exception => e
puts e
end
end
icons
end
Embora isso restaure a funcionalidade do site, infelizmente o faz sem carregar nenhum ícone ou imagem em todo o site, então, em última análise, isso não resolve nada.
Estamos usando os seguintes plugins:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-bbcode.git
- git clone https://github.com/discourse/discourse-follow.git
- git clone https://github.com/discourse/discourse-user-notes.git
Pelo que me lembro, usamos alguns plugins como o discourse-follow antes de serem oficialmente suportados, então talvez o downgrade deles tenha quebrado algo no processo.
A versão original antes da atualização era 2.8.0.beta2, agora estamos na 2.9.0.beta1.
Tentei praticamente tudo que consigo pensar, não tinha certeza se deveria postar aqui porque sinto que este é um bug muito genérico para alguém conseguir ajudar, mas se alguém tiver alguma ideia do que está causando isso, agradeceria a ajuda.
