Sitio roto debido a la actualización de ember 5

¡MUY PRONTO!

Me perdí por completo el anuncio de este cambio porque se mezcló con las vacaciones de invierno, y como aficionado, no leo este foro con mucha regularidad. Solo me di cuenta una vez que la actualización de hoy rompió el sitio. Ahora no tengo forma de volver atrás porque EMBER_VERSION ya está deshabilitado, y no tengo forma de avanzar para arreglar lo que sea que necesite arreglarse porque no puedo ver las advertencias de desuso (que no aparecieron la última vez que tuve que hacer mantenimiento activo, antes de las vacaciones), ni que sepa mucho de Ember de todos modos.

Esto me hace considerar seriamente extraer la base de datos y mudarme a una solución de foro diferente, una donde la versión predeterminada sea realmente segura de usar para aficionados que no pueden vigilar los foros de desarrollo como un halcón.

¿Alguien puede pensar en otra solución, dado que no tengo idea de qué está rompiendo Ember 5 o por qué? La consola de JavaScript no es útil.

2 Me gusta

En realidad, la consola de JavaScript suele ser muy útil.

Quizás hubieras preferido stable, pero ya es un poco tarde, lo aprecio.

Sugiero eliminar todas tus personalizaciones, y quizás usar una instancia de staging, volver a ponerlas una por una y averiguar cuáles están causando los problemas y descartarlas o trabajar en ellas.

Muchos plugins populares y componentes de temas ya son compatibles.

2 Me gusta

Solo dice “Ember no encontrado”, la pantalla es un icono de carga interminable.

Instalé la versión predeterminada y estándar de Discourse de Digital Ocean. En ningún momento me preguntaron qué rama quería, y asumí que eso me pondría en una versión LTS. Que te envíen una función que rompe todo y luego la hagan obligatoria en menos de 2 meses NO es lo que considero LTS; ni en Wordpress ni en Linux harías eso ni siquiera para lanzamientos que no son LTS. Por favor, cambien esto para todas las nuevas instancias de DigitalOcean y pongan una advertencia de que los aficionados deben mantenerse alejados.

Vas a odiar esta respuesta, pero DO hace lo que DO quiere y está fuera de las manos de los demás. Así que deberías preguntarles eso a ellos.

Y en todas partes fuera de DigitalOcean siempre se advierte que no se use su instalación.

3 Me gusta

Por el error en la consola, normalmente puedes averiguar de qué componente del tema se emitió el error. ¿Puedes pegar el error completo aquí (expandiendo el error), o si es posible, te importaría compartir la URL de tu foro aquí (o por mensaje privado si lo prefieres)?

3 Me gusta

Entonces tienes que hablar con DO :slight_smile:

Dicho esto, en la instalación estándar (no la versión de DO) tests-passed (la predeterminada) no es LTS, stable sí lo es. Creo que CDCK intenta fomentar este valor predeterminado porque aprovecha a la comunidad para probar la última versión. ¿Creo que es una compensación razonable por obtener software gratuito? Pero tienes la opción.

2 Me gusta

safe-mode podría ayudar. Quizás puedas simplemente deshabilitar los temas que están rotos.

Veo que hice algo por ti hace años. Iba a ver si podía encontrar una solución rápida, pero ya no tengo una cuenta en tu sitio.

3 Me gusta

El modo seguro debería funcionar, de todos modos, ¿lo has probado?, así podrás aislar el tema o plugin problemático.

Es muy difícil ayudar sin información adicional.

¿Qué temas estás usando? ¿Qué plugins? ¿Cuál está roto?

3 Me gusta

Hola @Judith

Lamento mucho que esto te haya tomado por sorpresa. :cry: He separado esto en su propio tema dedicado para que podamos concentrarnos en que vuelvas a estar en funcionamiento.

¿Has progresado? :crossed_fingers:

3 Me gusta

¡Gracias a todos!

He identificado los plugins rotos como los responsables de enviar notificaciones push de Discourse a iPhones (donde la forma estándar de Discourse no funciona), a saber, el de @featheredtoast GitHub - featheredtoast/discourse-pushover-notifications: Pushover notifications for Discourse, así como el mío GitHub - Sprachprofi/discourse-fcm-notifications: Send Discourse push notifications through FCM to any custom app. El código Ember es idéntico en ambos y muy simple, solo un par de campos adicionales en el administrador y un campo adicional en el perfil del usuario, con comprobaciones sobre si las notificaciones push ya están activas o no. Dado que la retirada del interruptor EMBER_VERSION significa que no puedo ver advertencias de deprecación ni mensajes de error que me ayuden a reducir cuál de esas pocas líneas es un problema, le pedí a Github Copilot consejos sobre qué podría haber cambiado entre Ember 3 y Ember 5 y estoy probando esas sugerencias. Si tienes ideas, estoy a tu disposición.

Permítanme reiterar que así no es como se debe implementar un cambio disruptivo y estoy profundamente decepcionado con Discourse. Varias políticas que van en contra de toda sensatez:

  • poner a personas no técnicas en la versión tests-passed en lugar de la LTS por defecto
  • agravar esto al no mencionar siquiera la posibilidad de optar por una versión más estable en la guía de instalación oficial; solo lo saben los conocedores del foro que presumiblemente tienen menos necesidad de ello
  • imposibilitar la reversión a una versión anterior y funcional
  • agravar esto al garantizar también que la compatibilidad retroactiva del proyecto es de menos de dos meses, mediante la eliminación deliberada del indicador EMBER_VERSION. Otros proyectos tienen compatibilidad retroactiva de un año, y esos son proyectos en los que también es posible revertir a versiones anteriores.
2 Me gusta

Para tu propio plugin, creo que el (único) problema es que estás usando un global de Ember

export default Ember.Component.extend({

que debería ser refactorizado a

import Component from "@ember/component";
export default Component.extend({

(Sería aún mejor refactorizarlo a sintaxis de clase, pero eso no es necesario para que tu sitio vuelva a funcionar)

Por cierto, ChatGPT es capaz de detectar cosas como esta.

4 Me gusta

Sí, estoy de acuerdo con @RGJ. Basándonos en el error ‘Ember no encontrado’ mencionado anteriormente, el problema más probable es la depreciación de ‘ember-global’. Más detalles aquí (enlazado desde el anuncio original). En estos plugins, parece que se está utilizando para Ember.Component, y también para algunas llamadas a Ember.computed.*.

Aquí hay un par de PRs rápidos. Es posible que haya otros problemas que se revelen después de que se realice esta corrección, pero no veo nada obvio al revisar el código JS.

Gracias por tus comentarios sobre el proceso de implementación. Estamos trabajando constantemente para lograr el equilibrio adecuado entre el progreso y la estabilidad. Definitivamente tendremos en cuenta lo que hemos aprendido de esta implementación y lo aplicaremos a futuros proyectos de actualización/refactorización.

10 Me gusta

¡Gracias @david! He desactivado las notificaciones de Pushover por ahora para reducir el espacio de error y he incorporado la última versión del plugin Discourse FCM Notifications, pero una nueva compilación todavía me da el error “Ember not defined”.

Como referencia, la sugerencia de Copilot fue:

La parte sobre set / setProperties parece estar equivocada; he comprobado que estas funciones todavía existen en Ember 5. Cambiar this._super a super tampoco funcionó, dio un mensaje de error durante la compilación. La sintaxis de computed también ha cambiado, actualmente no es ni la original ni la que recomendó Copilot. Así que me he quedado sin ideas sobre qué más puede haber cambiado en Ember 5. No uso Ember en ninguno de mis otros proyectos.

¿Alguna otra idea?

3 Me gusta

Lo siento mucho, fue mi error - me salté un lugar :facepalm:. Esto debería funcionar: Fixup Ember.Component usage by davidtaylorhq · Pull Request #2 · Sprachprofi/discourse-fcm-notifications · GitHub

Sí, creo que la IA puede tener problemas para diferenciar entre patrones nuevos no esenciales (cosas como la sintaxis de clase nativa, this.set/get, etc.) y correcciones de depreciación esenciales. Las sugerencias de la IA aún pueden ser útiles, pero solo si tienes suficiente contexto para saber qué confiar/ignorar.

Personalmente, siempre iría primero a una fuente autorizada como https://deprecations.emberjs.com/v3.x.

7 Me gusta

¡El sitio ya está en línea! ¡¡¡Muchas gracias por ayudarme a solucionarlo en tiempo real!!! Realmente lo aprecio.

@featheredtoast, por favor, acepta también la solicitud de extracción para que los foros que utilizan notificaciones de Pushover también puedan actualizarse de forma segura.

5 Me gusta

Las correcciones de notificaciones de Pushover también se fusionaron a partir de hoy :white_check_mark:

9 Me gusta

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