Comment ajouter des requêtes Data Explorer à partir d'un plugin ?

J’ai l’impression qu’il manque une API ici.

L’Explorateur de données est devenu de plus en plus utile dans le cadre d’un flux de travail de Plugin, mais :

Comment ajouter de manière fiable mais tolérante des requêtes d’Explorateur de données à partir d’un plugin tiers afin que nous puissions échouer avec élégance sans compromettre la construction, mais aussi réessayer à chaque fois au cas où l’Explorateur de données serait finalement installé ?

Options que j’ai explorées :

  1. Plugin de sondage : c’est de la triche - les requêtes sont ajoutées par le plugin Explorateur de données lui-même
  2. Fixtures de plugin - cela semble problématique car les artefacts de l’Explorateur de données ne semblent pas être garantis d’être disponibles lors de l’initialisation du plugin - peut-être parce que le plugin Explorateur de données est lui-même un plugin tiers et qu’il n’est pas garanti qu’il ait été chargé ? Je suppose que je pourrais essayer d’utiliser SQL via du code Ruby pour identifier si la table existe ?
  3. Migrations - J’ai écrit des migrations, mais elles doivent échouer inoffensivement MAIS NE PAS SE TERMINER si le plugin Explorateur de données n’est pas installé et qu’il n’y a pas de table de requête - les migrations doivent toujours s’exécuter lors de la reconstruction jusqu’à ce que le plugin Explorateur de données soit installé et que la table soit disponible afin que les requêtes puissent être ajoutées - de cette façon, du point de vue de l’administrateur, la solution est flexible et ne dépend pas de l’ordre d’installation. Une migration qui échoue ne devrait pas compromettre la construction - existe-t-il un moyen d’échouer/de reporter une migration sans arrêter la construction ?
  4. Utilisation d’un travail périodique planifié pour vérifier la présence à la fois du plugin Explorateur de données/table de requêtes et des requêtes requises.
  5. Demander à l’administrateur de les ajouter manuellement… berk.

Je suppose que je vais essayer la version SQL de 2 ensuite ou peut-être que je manque quelque chose ?

1 « J'aime »

Je vais jeter un coup d’œil à mon code qui dépend du plugin d’abonnement.

Pourquoi avez-vous besoin d’un explorateur de données ? Le but est-il de créer des requêtes qu’un utilisateur final utilisera ?

Oui, exactement. Data Explorer atteint un point où vous pouvez l’utiliser pour des tâches administratives pour ceux qui ont des rôles élevés dans un processus.

1 « J'aime »

Vous pourriez avoir une tâche qui s’exécute pour vérifier qu’ils sont installés. Elle ne démarrerait pas tant que tout ne fonctionne pas.

Mais pour vous assurer que rien n’est cassé, vous pouvez vérifier qu’un appel d’explorateur de données est disponible. Je crois que c’est ce que je fais pour les abonnements, peut-être. (Il est tôt et je n’ai pas encore ouvert mon ordinateur portable.)

Ils ont ajouté du code la semaine dernière qui vérifie si le plugin de chat est chargé.

Je pense que votre problème est cependant une condition de concurrence (race condition).

1 « J'aime »

Oui, cette option est manquante dans la liste des options disponibles, je vais l’ajouter.

Mais avoir un travail en cours d’exécution (qui continuera à fonctionner périodiquement et à vérifier) semble un peu inutile, non ?

Bonne suggestion cependant (et j’y ai pensé mais ça semblait un peu …)

Peut-être vous contentez-vous de la mettre en file d’attente pour qu’elle s’exécute une fois au démarrage ? Et elle s’exécuterait jusqu’à ce que le test du plugin réussisse ou qu’elle s’arrête au bout de quelques minutes ?

1 « J'aime »

J’aime l’idée de la mise en file d’attente lors de l’initialisation. Cela surmonte potentiellement le problème de chargement. Je préfère ça à l’option une fois toutes les 24 heures. Je vais peut-être essayer ça ! Merci !

[citation=“merefield, post:1, topic:368511”]

  • existe-t-il un moyen d’échouer/de reporter une migration sans arrêter la construction ?
    [/citation]

au fait, la réponse à cette question serait également généralement utile pour un ensemble plus large de problèmes.

Je pense que le simple fait de placer votre test quelque part où il est récupéré en cas d’échec est tout ce dont vous avez besoin. Mais ne pouvez-vous pas simplement tester pour voir si quelque chose comme DataExplorer.quelque chose existe ?

Je n’en sais pas assez sur l’utilisation des migrations pour avoir envisagé de les utiliser pour votre cas d’utilisation. Vous pourriez également avoir un endpoint que, disons, le panneau d’administration appelle, et il vérifierait que vos requêtes sont installées.

Maintenant que j’y pense, j’ai peur que le seul problème que j’aie réellement résolu soit l’ajout de l’autre plugin pour que les tests puissent fonctionner.