La reciente actualización de Discourse rompió el outlet del plugin de una manera extraña

Uno de los cambios en Discourse en la última semana más o menos rompió mi plugin y no puedo averiguar qué está mal o cómo arreglarlo. El plugin funcionó bien durante años hasta este momento.

El plugin hace varias cosas, pero la que parece relevante aquí es agregar un botón a la página del perfil del usuario.

Ahora, cuando visito esa página para cualquier usuario, la mayor parte de la página no se renderiza (incluido el botón que mi plugin pretende agregar):

(Si deshabilito el plugin a través de su botón de Configuración, la página se renderiza correctamente).

La consola de Javascript en Chrome muestra la siguiente excepción y el siguiente rastreo de pila cada vez que se actualiza esta página:

No estoy seguro de qué pensar de ese error, ya que no es mi código, y la t que es not a function no está en la línea, ni cerca de ella, de donde proviene la excepción. Bastante confuso. Pero no soy un experto en JS, así que tal vez me esté perdiendo algo aquí.

Al depurar paso a paso con el depurador de Chrome, el problema ocurre en esa línea mientras se procesa la plantilla de mi plugin, pero no puedo ver qué está causando el problema, o si se debe a algo que necesito cambiar/actualizar o a un error en el propio Discourse.

El código JS del plugin y la plantilla HBS que creo que están involucrados están en mi conector user-profile-primary, que se puede encontrar aquí:

No lo sé con seguridad, pero me pareció que estos commits recientes de Discourse podrían estar involucrados:

¡Cualquier sugerencia sería muy apreciada!

Hola @LeoDavidson - gracias por plantear este problema. Es casi seguro que está relacionado con esos commits; lo investigaré e intentaré averiguar qué cambió. No tenía la intención de introducir ningún cambio de comportamiento.

Pero mientras tanto, esta PR debería solucionar el problema al mover los conectores de su plugin a un diseño de directorio más común:

10 Me gusta

¡Muchas, muchas gracias! Tanto por la PR como por ser tan rápido. Acabo de aplicarla y ¡todo se ve bien ahora!

4 Me gusta

He investigado qué causó este cambio de comportamiento. Los conectores estaban ubicados así:

assets/javascripts/discourse/templates/user/connectors/{outlet-name}/{unique-name}.js
assets/javascripts/discourse/templates/user/connectors/{outlet-name}/{unique-name}.hbs

Ese /user/ adicional en la ruta significa que no es detectado por nuestra lógica unColocateConnectors.

He buscado en all-the-plugins y all-the-themes y no veo ninguna otra ocurrencia de esta disposición de directorios. Así que, por ahora, dejaré las cosas como están, a menos que recibamos más informes de problemas.

4 Me gusta

Este tema se cerró automáticamente después de 554 días. Ya no se permiten nuevas respuestas.