Data Explorer è diventato sempre più utile come parte di un flusso di lavoro di plugin, ma:
Come possiamo aggiungere in modo affidabile ma tollerante le query di Data Explorer da un plugin di terze parti in modo da poter fallire in modo aggraziato senza compromettere la build, ma anche riprovare ogni volta nel caso in cui Data Explorer venga eventualmente installato?
Opzioni che ho esplorato:
Sondare il plugin: questo è un imbroglio: le query vengono aggiunte dal plugin Data Explorer stesso
Fixture del plugin - questo sembra problematico perché gli artefatti di Data Explorer non sembrano essere garantiti per essere disponibili durante l’inizializzazione del plugin - forse perché il plugin Data Explorer è esso stesso un plugin di terze parti e non è garantito che sia stato caricato? Immagino che potrei provare a usare SQL tramite codice Ruby per identificare se la tabella esiste?
Migrazioni - Ho scritto migrazioni ma devono fallire innocuamente MA NON COMPLETARSI se il plugin Data Explorer non è installato e non esiste una tabella di query - le migrazioni dovrebbero sempre essere eseguite alla ricompilazione fino a quando il plugin Data Explorer non è installato e la tabella è disponibile in modo che le query possano essere aggiunte - in questo modo dal punto di vista dell’amministratore la soluzione è flessibile e non dipende dall’ordine di installazione. Una migrazione fallita non dovrebbe compromettere la build - c’è un modo per fallire/rimandare una migrazione senza interrompere la build?
Utilizzo di un lavoro programmato periodico per verificare la presenza sia del plugin Data Explorer/tabella di query sia delle query richieste.
Chiedere all’amministratore di aggiungerli manualmente… bleah.
Suppongo che proverò la versione SQL del punto 2 la prossima volta o forse mi sfugge qualcosa?
Sì, esattamente. Data Explorer sta arrivando a un punto in cui puoi usarlo per attività amministrative per coloro che hanno ruoli elevati in un processo.
Potresti avere un processo che controlla che siano installati. Non partirebbe finché tutto non è in esecuzione.
Ma per assicurarti che le cose non siano rotte, puoi verificare che sia disponibile una chiamata a data explorer. Penso che sia quello che sto facendo per le sottoscrizioni, forse. (È presto e non ho ancora aperto il mio laptop.)
Hanno aggiunto codice la scorsa settimana che controlla se il plugin di chat è caricato.
Penso che il tuo problema sia una race condition, però.
Forse puoi semplicemente metterlo in coda per essere eseguito una volta all’avvio? E verrebbe eseguito finché il test per il plugin non ha successo o morirebbe dopo alcuni minuti?
Mi piace l’idea di accodare all’inizializzazione. Questo potenzialmente supera il problema del caricamento. Preferisco questa all’opzione una volta ogni 24 ore. Potrei provarla! Grazie!
Penso che mettere il tuo test in un posto in cui venga recuperato se fallisce sia tutto ciò di cui hai bisogno. Ma non puoi semplicemente testare per vedere se qualcosa come DataExplorer.qualcosa esiste?
Non so abbastanza sull’uso delle migrazioni per aver considerato di usarle per il tuo caso d’uso. Potresti anche avere un endpoint che, diciamo, il pannello di amministrazione chiama, e controllerebbe che tu abbia le tue query installate.
Ora che ci penso, temo che l’unico problema che ho effettivamente risolto sia l’aggiunta dell’altro plugin in modo che i test possano funzionare.