Mise à niveau du composant de thème via rake non fonctionnelle

Nous avons un composant de thème que nous installons via la commande rake. Le plugin et son installation via la commande rake fonctionnent parfaitement. La mise à niveau fonctionne également parfaitement lorsque nous l’effectuons depuis l’interface d’administration, par exemple /admin/customize/themes/40. Le problème survient lorsque nous tentons de le mettre à niveau depuis la ligne de commande avec cette commande rake. La sortie est exactement celle que j’attendais. Cependant, les modifications ne sont pas prises en compte. Cela ressemble-t-il à un bug ?

$ rake themes:install -- '--{"discourse-login-modal": {"url": "https://github.com/example/discourse-login-modal.git", "add_to_all_themes": true}}'
discourse-login-modal : déjà installé. Mise à jour depuis le distant.

Résultats :
 Installé : 0
 Mis à jour :   1
 Erreurs :    0

Fournir plus de détails sur le problème. L’exécution de la commande rake pour la mise à niveau n’a apporté aucun changement visible à mon composant de thème, mais après cela, l’interface d’administration Admin pense que la mise à niveau a été appliquée (j’ai oublié de capturer la capture d’écran).

Après un changement ultérieur dans mon composant de thème, l’interface d’administration Admin indique maintenant qu’une mise à niveau est disponible, mais lorsque je l’applique, j’obtiens cet avertissement selon lequel mes modifications locales seront écrasées. Ces modifications sont exactement celles que je voulais appliquer via la commande rake install, qui n’a en réalité rien appliqué.


.

Bonjour @markvanlan, merci pour votre travail sur la commande rake permettant d’installer un thème ! Savez-vous pourquoi la mise à jour via rake install ne fonctionne pas ?

Je vais m’en occuper plus tard cette semaine. Je n’étais pas au courant que la commande rake ne fonctionnait pas.

Je n’ai pas compris pourquoi la mise à jour ne fonctionne pas, mais j’ai pensé à une solution de contournement : ajouter une commande de désinstallation. Désinstaller le thème avant d’exécuter la commande rake install semble fonctionner.

J’ai ouvert une petite PR pour vérifier si cette approche est acceptable : [WIP] FEATURE: Rake task to uninstall theme by chandandi · Pull Request #10138 · discourse/discourse · GitHub

Je m’excuse de ne pas être revenu vers vous à ce sujet !

J’ai une idée de la raison pour laquelle cela ne se met peut-être pas à jour. Si j’ai raison, la correction devrait être très rapide.

Quelque chose de très étrange se passe ici. Lorsque ThemesInstallTask met à jour un thème distant, les informations distantes sont correctement mises à jour (le dernier SHA est affiché et commits_behind est 0, comme vous l’avez noté)

Mais le fichier SCSS n’est pas mis à jour dans la base de données. J’avais supposé qu’il s’agissait d’un problème de non-invalidation du cache, mais ce n’est pas le cas ! Le SCSS dans la base de données ne se met pas à jour.

La valeur devrait être différente sur cette capture d’écran

En examinant la manière dont le contrôleur de thème admin gère les mises à jour par rapport à la façon dont la tâche met à jour les thèmes distants, je ne vois aucune différence.

:male_detective: :mag:

Je vais élucider ce mystère.

J’ai trouvé la source du problème et j’ai créé une PR. J’explique le problème dans la description.

Fusionné ! La mise à jour est corrigée.