J’ai un plugin qui (presque) crée des Droplets Digital Ocean et installe Discourse.
J’ai une page avec un modèle qui rend des informations sur le modèle Rails, le droplet qu’il crée, et l’instance Discourse qui est installée sur le droplet. J’ai toutes les informations nécessaires qui circulent entre Rails et Ember via MessageBus. Je souhaite afficher différents contenus selon que :
il y a assez d’informations pour créer le droplet
la tâche de création du droplet est en cours (elle met à jour des éléments du modèle)
Discourse a été installé
Je continue d’obtenir :
Vous avez modifié "hasStatus" deux fois sur <@ember/component:ember660> lors d'un seul rendu.
EDIT : Eh bien, c’était parce que j’avais deux fonctions computed qui surveillaient la même chose…
Je pense avoir enfin réalisé que je ne peux pas faire cela en utilisant quelque chose comme {{#if hasStatus}} (qui est une fonction calculée) dans le modèle, car la page devra être re-rendue pour afficher le statut après que l’utilisateur ait cliqué sur le bouton « créer le droplet » (car cela définira alors la variable installation_status qui affiche ce qui se passe pendant l’installation).
Ou peut-être que j’ai une autre erreur qui déclenche cela et que ce que je fais devrait fonctionner ?
Donc, je suppose que ce que je dois faire, c’est utiliser <gasp> du CSS pour masquer les différents éléments ?
Eh bien, comme c’est souvent le cas lorsque je publie ce genre de choses, la réponse est encore plus étrange que ce que j’aurais pu imaginer.
Si j’utilise des éléments comme {{#if server.value}} et que value est poussé par MessageBus, cela fonctionne comme prévu lorsque je fais une mise à jour depuis la console Rails. Je peux le définir à nil ou non-nil, et la section de la page apparaît ou disparaît comme attendu. Lorsque j’exécute ma tâche Ansible depuis un terminal, Ansible pousse une nouvelle valeur via une route, ce qui met à jour l’enregistrement, qui la pousse ensuite vers le bus de messages, et la section du modèle apparaît comme prévu.
Cependant, si Ansible est exécuté par un job de Discourse, je vois toujours Rails prétendre pousser des données vers le bus de messages. Et dans la console JavaScript du navigateur, je vois qu’une fonction calculée qui suit cette valeur se déclenche, mais la valeur est null. Si je recharge le navigateur, les données sont présentes et la page se rend comme prévu. Peut-être que c’est une particularité de l’environnement de développement et que ce sera différent en production.