Chemin des composants thématiques

Bonjour !

Je souhaite passer à la dernière version, mais je rencontre des problèmes avec certains composants de thème.
Ce sont tous mes propres composants, et je les ai déplacés de GitHub vers GitLab. Maintenant, lorsque je souhaite mettre à jour Discourse (pas depuis l’interface de Discourse), j’obtiens des erreurs car ils ne sont plus disponibles. J’ai essayé de les supprimer depuis Discourse, mais ils ne disparaissent pas.
Ma question est donc : où se trouve le chemin pour les supprimer directement sur le serveur ? Je n’arrive pas à les trouver.

J’ai essayé le mode sans échec, mais je ne peux pas accéder au forum dans ce mode.


MODIFICATION :

Existe-t-il un fichier, similaire à app.yml, où tous les thèmes et composants sont stockés, afin que je puisse supprimer la liste et reconstruire Discourse sans eux ?

Je pense que c’est le problème que vous devez résoudre. La bonne approche consiste à supprimer tous les thèmes et composants de thème provenant de l’ancien emplacement, puis à en importer de nouveaux depuis leurs nouveaux emplacements.

2 « J'aime »

Ce n’est pas possible, car Discourse se retrouverait alors dans une boucle infinie. C’est la raison pour laquelle j’ai demandé comment les supprimer autrement.
Je ne peux même pas accéder au mode sans échec.
Une réinstallation n’est pas non plus possible, car la sauvegarde est trop ancienne.
Après avoir exécuté ./launcher rebuild app, j’ai constaté que le forum n’est pas accessible aux invités.

Alors, comment puis-je le faire fonctionner à nouveau ?

1 « J'aime »

Pourquoi ? Que se passe-t-il à la place ?

L’âge de la sauvegarde ne devrait pas avoir d’importance ; même les sauvegardes vieilles de cinq ans se restaurent sans problème.

Pour être honnête, il semble que les composants du thème soient le moindre de vos soucis.

Si leur désinstallation est impossible via l’interface utilisateur, je crains que les autres méthodes échouent également.

1 « J'aime »

Je pense que désactiver manuellement les composants dans la base de données est une solution qui pourrait constituer un dernier recours ici. C’est très risqué, mais réalisable s’il n’y a pas d’autres options.

Les composants désactivés permettront au moins à la reconstruction de réussir, ce qui, à son tour, permettra d’accéder à l’interface d’administration pour supprimer et réinstaller les composants depuis GitLab.

1 « J'aime »

Rien ne se passe, le site n’est pas disponible en mode sans échec.

Bien sûr que cela compte, car tous les messages postés après la dernière sauvegarde sont perdus.

Et non, le forum fonctionnait parfaitement jusqu’à ce que j’essaie de faire la mise à jour avant de supprimer les composants.

@itsbhanusharma
Merci pour votre réponse. Je ne savais pas que le thème et les composants sont stockés dans la base de données.

Comment puis-je accéder à la base de données ?

EDIT :
Ok, je suis dans la base de données et je pense qu’il s’agit de la table theme_settings.
Comment supprimer tous les composants ?

J’ai mal lu votre message, j’ai cru que vous disiez qu’il était trop ancien car la restauration a échoué.

1 « J'aime »

Ils ne sont pas stockés dans la base de données, mais leur état d’activation/désactivation l’est.

Je ne me souviens pas exactement des étapes, mais j’ai récemment réparé une installation présentant un problème similaire.

Le plus important ici est de savoir si votre conteneur est toujours en cours d’exécution. Si c’est le cas, je pourrai peut-être vous conseiller sur la manière de désactiver depuis la base de données les composants problématiques.

Oui, le conteneur est toujours en cours d’exécution.
Désactiver les composants me serait très utile.

Ils sont bel et bien entièrement stockés dans la base de données (les tables commençant par theme*).

Et comment puis-je les supprimer (pas tout dans la table) ?

De mémoire, exécutez ceci depuis la console Rails. Trouvez l’ID du thème dans l’URL lorsque vous le consultez.

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

Bon, d’accord, c’est un problème.
Est-il possible d’utiliser quelque chose comme pgAdmin pour accéder directement à la base de données ?
Je ne connais pas l’ID du thème et des composants, car je n’ai plus accès à l’interface d’administration.


Édition :
J’ai trouvé le thème et les composants.
Le désactiver ne fonctionne pas, alors comment les supprimer avec rails c ?
J’ai même essayé de m’en débarrasser avec rake, mais rake ne peut pas non plus les supprimer.

Pourriez-vous fournir plus de détails ? Rencontrez-vous une erreur ? Si oui, laquelle ? Ou cela n’a-t-il aucun effet ?

rake themes:uninstall https://github.com/link/to/git.git
rake aborted !
La tâche 'themes:uninstall' est inconnue (consultez la liste des tâches disponibles avec `rake --tasks`)
Vouliez-vous dire ?  themes:install
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
(Voir la trace complète en exécutant la tâche avec --trace)

Ou quelle est la bonne commande pour supprimer des éléments avec rake ?

J’obtiens une liste de commandes avec rake --tasks et rake -AT, mais il n’y a pas de commande pour supprimer un thème ou un composant.

Avec rails c, je peux désactiver un thème, mais après un rechargement, c’est toujours l’ancien thème corrompu qui s’affiche.

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

Peux-tu essayer ces commandes dans la console Rails et voir si tu peux charger ton site ensuite ? Si non, peux-tu essayer de reconstruire ?

6 « J'aime »

J’ai dû le reconstruire après vos commandes, et ça a fonctionné : mon forum est de nouveau en ligne ! :+1: :slightly_smiling_face:

Un grand merci à vous qui m’avez aidé !

1 « J'aime »

Salut @Osama. Je m’inquiète récemment de la problématique des composants de thème pouvant casser une reconstruction.

Je pense qu’il nous faut un howto pour y remédier.

Je crois que cette correction ne traite que le cas où « la construction échoue parce que l’URL GitHub est cassée », n’est-ce pas ?

Pour les constructions qui échouent à cause d’une erreur dans le JavaScript, existe-t-il une méthode similaire pour désactiver ou supprimer les thèmes en ligne de commande que nous devrions inclure dans un howto ?

EDIT : comme l’échec lorsque « Alternative Logos » est inclus…

Je réfléchis à cela depuis un moment également, et mon avis est que cela a du sens pour certaines communautés mais pas pour toutes. Certaines communautés considèrent leurs personnalisations/thèmes comme une partie fondamentale de l’identité de leur site et elles aimeraient vraiment savoir s’il y a des problèmes avec leurs personnalisations lorsque leur site est déployé. D’autres communautés utilisent une installation vanilla de Discourse avec quelques personnalisations ou composants ajoutés par-dessus et elles pourraient facilement se passer de ceux-ci pendant quelques jours.

Peut-être que la case à cocher « Mettre à jour automatiquement lors de la mise à jour de Discourse » devrait être désactivée par défaut lors de l’installation d’un nouveau thème ou composant ? Elle est actuellement activée par défaut et je pense qu’elle devrait être désactivée par défaut, mais cela nécessite une discussion plus large…

Non, l’extrait de code ci-dessus (en particulier la deuxième ligne) désactive la mise à jour automatique lors du déploiement pour tous les thèmes/composants actuellement installés. Cela devrait donc corriger toutes les constructions cassées dues à la mise à jour automatique des thèmes, y compris les erreurs JS/CSS. Le howto ne devrait inclure que la deuxième ligne.

1 « J'aime »

Je viens tout juste de rencontrer ce problème aussi. Si vous avez un composant lié à un dépôt public et que vous rendez ensuite ce dépôt privé, les reconstructions échouent. C’est désagréable car les utilisateurs peuvent apporter des modifications qui peuvent casser le site des mois plus tard pour les administrateurs système.

Les commandes sur Path of theme components - #16 by Osama ont très bien fonctionné pour moi. J’ajouterais des instructions sur la façon d’accéder à la console Rails.

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