Ruta de los componentes del tema

¡Hola!

Quiero actualizar a la última versión, pero tengo algunos problemas con ciertos componentes del tema.
Todos son mis propios componentes y los moví de GitHub a GitLab. Ahora, cuando intento actualizar Discourse (no desde dentro de Discourse), obtengo errores porque ya no están disponibles. Intenté eliminarlos desde dentro de Discourse, pero no se borran.
Mi pregunta es: ¿dónde está la ruta para eliminarlos directamente en el servidor? No logro encontrarlos.

Probé el modo seguro, pero no puedo acceder al foro en ese modo.


EDIT:

¿Existe un archivo similar a app.yml donde se almacenen todos los temas y componentes, para que pueda eliminar la lista y reconstruir Discourse sin ellos?

Creo que este es el problema que debes resolver. La forma correcta de abordarlo es eliminar todos los temas y componentes de tema que provienen de la ubicación anterior e importar los nuevos desde sus nuevas ubicaciones.

2 Me gusta

Esto no es posible, porque entonces Discourse quedaría en un bucle infinito. Por esa razón pregunté cómo eliminarlos de otra manera.
Ni siquiera puedo entrar en modo seguro.
Una reinstalación tampoco es posible porque la copia de seguridad es demasiado antigua.
Después de ejecutar ./launcher rebuild app, he visto que el foro no está disponible para invitados.

Entonces, ¿cómo puedo hacer que funcione de nuevo?

1 me gusta

¿Por qué? ¿Qué sucede en su lugar?

La antigüedad de la copia de seguridad no debería importar; incluso las copias de seguridad de hace 5 años se restauran sin problemas.

Para ser honesto, suena como si los componentes del tema fueran lo de menos en tus problemas.

Si desinstalarlos es imposible a través de la interfaz de usuario, temo que otros métodos también fallarán.

1 me gusta

Creo que desactivar componentes manualmente en la base de datos es el tipo de solución que podría ser el último recurso en este caso. Es muy arriesgado, pero factible si no hay otras opciones.

Al menos, los componentes desactivados permitirán que la reconstrucción tenga éxito, lo que a su vez permitirá acceder a la interfaz de administración para eliminar y reinstalar componentes desde GitLab.

1 me gusta

No sucede nada, el sitio no está disponible en modo seguro.

Por supuesto que importa, porque todos los mensajes posteriores a la última copia de seguridad se han perdido.

Y no, el foro funcionaba perfectamente hasta que intenté realizar la actualización antes de eliminar los componentes.

@itsbhanusharma
Gracias por tu respuesta. No sabía que el tema y los componentes se almacenan en la base de datos.

¿Cómo puedo acceder a la base de datos?

EDITO:
Ok, estoy en la base de datos y creo que es la tabla theme_settings.
¿Cómo elimino todos los componentes?

Malinterpreté tu publicación; pensé que decías que era demasiado antigua porque la restauración falló.

1 me gusta

No se almacenan en la BD, sin embargo, su estado de activación/desactivación sí se guarda en la propia BD.

No recuerdo exactamente los pasos, pero recientemente solucioné una instalación con un problema similar.

Lo más importante aquí es saber si tu contenedor sigue en ejecución. Si está en ejecución, puedo darte consejos sobre cómo intentar desactivar los componentes problemáticos desde la base de datos.

Sí, el contenedor sigue en ejecución.
Desactivar los componentes me ayudaría mucho.

Sí que se almacenan completamente en la base de datos (tablas que comienzan con theme*)

¿Y cómo puedo eliminarlas (no todo en la tabla)?

De entrada, ejecuta esto desde la consola de Rails. Encuentra el ID del tema en la URL al verlo.

t = Theme.find(123)
t.enabled = false
t.save

Bueno, vale, eso es un problema.
¿No es posible usar algo como pgAdmin para acceder directamente a la base de datos?
No conozco el ID del tema ni de los componentes porque ya no tengo acceso al área de administración.


Edición:
He averiguado el tema y los componentes.
Desactivarlos no funciona, así que, ¿cómo los elimino con rails c?
Incluso intenté eliminarlos con rake, pero rake tampoco puede borrarlos.

¿Podrías compartir más detalles? ¿Obtienes un error? De ser así, ¿cuál es el error? ¿O no tiene ningún efecto?

rake themes:uninstall https://github.com/link/to/git.git
rake aborted!
No se sabe cómo construir la tarea 'themes:uninstall' (Vea la lista de tareas disponibles con `rake --tasks`)
¿Quiso decir?  themes:install
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
(Vea el rastreo completo ejecutando la tarea con --trace)

O, ¿cuál es el comando correcto para eliminar cosas con rake?

Obtengo una lista de comandos con rake --tasks y rake -AT, pero no hay un comando para eliminar un tema o un componente.

Con rails c puedo desactivar un tema, pero tras una recarga sigue apareciendo el tema antiguo corrupto.

Theme.where(user_selectable: true).update_all(user_selectable: false)
Theme.where(auto_update: true).update_all(auto_update: false)
Theme.clear_default!

¿Puedes probar esto en la consola de Rails y ver si puedes cargar tu sitio después? Si no es así, ¿puedes intentar reconstruirlo?

6 Me gusta

¡Tuve que reconstruirlo tras tus instrucciones y funcionó, ¡y mi foro está de nuevo en línea! :+1: :slightly_smiling_face:

¡Muchas gracias a todos los que me ayudaron!

1 me gusta

Hola @Osama. Últimamente me he preocupado por el problema de que los componentes del tema puedan romper una reconstrucción.

Creo que necesitamos una guía howto para abordarlo.

Pienso que esta corrección solo soluciona el caso de “construcción rota porque la URL de GitHub está dañada”, ¿verdad?

Para las construcciones que fallan debido a un error en el JavaScript, ¿existe una forma similar de desactivar o eliminar temas desde la línea de comandos que deberíamos incluir en una howto?

EDIT: como el fallo cuando se incluyen “Logotipos alternativos”…

También he estado pensando en esto durante un tiempo y, en mi opinión, tiene sentido para algunas comunidades, pero no para todas. Algunas comunidades consideran que sus personalizaciones o temas son una parte fundamental de la identidad de su sitio y les gustaría saber si hay problemas con sus personalizaciones al desplegar su sitio. Otras comunidades utilizan una instalación estándar de Discourse con algunas personalizaciones o componentes añadidos encima y podrían vivir fácilmente unos días sin ellos.

Quizás la casilla de verificación Actualizar automáticamente cuando se actualiza Discourse debería estar desactivada por defecto al instalar un nuevo tema o componente. Actualmente está activada por defecto y creo que debería estar desactivada, pero esto requiere una discusión más amplia…

No, el fragmento de código anterior (en particular la segunda línea) desactiva la actualización automática al desplegar para todos los temas o componentes actualmente instalados, por lo que debería solucionar cualquier compilación rota debido a la actualización automática de temas, incluidos errores de JavaScript/CSS. La sección howto solo debería incluir la segunda línea.

1 me gusta

Acabo de encontrarme con este problema también. Si tienes un componente vinculado a un repositorio público y luego haces que ese repositorio sea privado, las reconstrucciones fallan. Es desagradable porque los usuarios pueden realizar cambios que pueden romper el sitio para los administradores del sistema meses después.

Los comandos en Path of theme components - #16 by Osama funcionaron muy bien para mí. Añadiría instrucciones sobre cómo entrar en la consola de Rails.

./launcher start app
./launcher enter app
rails c