Hola, hemos estado atascados con un error muy desagradable que ha roto todo nuestro sitio web sin una solución aparente. Hemos intentado de todo, desde reconstruir hasta eliminar/agregar complementos sin éxito. Tenemos una copia de seguridad funcional de hace un par de meses, pero parece que cualquier intento de reconstruir esto con una versión más reciente simplemente rompe el sitio.
El mensaje principal que se muestra dice:
Oops
El software que impulsa este foro de discusión encontró un problema inesperado. Lamentamos las molestias.
La información detallada sobre el error se registró y se generó una notificación automática. Le echaremos un vistazo.
No se requiere ninguna acción adicional. Sin embargo, si la condición de error persiste, puede proporcionar detalles adicionales, incluidos los pasos para reproducir el error, publicando un tema de discusión en la categoría de comentarios del sitio.
Este es un mensaje de error genérico de Discourse que no produce resultados reales al solucionar problemas. Al revisar los registros de nuestro docker, pude encontrar esto:
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'
Así que, naturalmente, pensé que podría solucionar el problema simplemente implementando un try/catch en la línea 501 donde ocurre el error. Este es el método en cuestión:
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
Si bien esto restaura la funcionalidad del sitio, desafortunadamente lo hace sin cargar ningún icono o imagen en todo el sitio web, por lo que en última instancia esto no soluciona nada.
Estamos utilizando los siguientes complementos:
- 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
Por lo que recuerdo, hemos utilizado algunos complementos como discourse-follow antes de que fueran compatibles oficialmente, por lo que tal vez degradarlos rompió algo en el proceso.
La versión original antes de la actualización era 2.8.0.beta2, ahora estamos en 2.9.0.beta1.
He intentado casi todo lo que se me ocurre, no estaba seguro de si debía publicar aquí porque siento que este es un error demasiado genérico para que alguien pueda ayudar, pero si alguien tiene alguna idea de lo que está causando esto, agradecería la ayuda.
