У меня есть подозрение, что здесь отсутствует какой-то API.
Data Explorer становится всё более полезным в рамках рабочего процесса плагина, однако:
Как надёжно, но с учётом возможных сбоев, добавлять запросы Data Explorer из стороннего плагина, чтобы корректно обрабатывать ошибки, не ставя под угрозу сборку, и при этом повторять попытку каждый раз на случай, если Data Explorer будет установлен в будущем?
Рассмотренные мной варианты:
Опрос плагина: это обходной путь — запросы добавляются самим плагином Data Explorer.
Фикстуры плагинов: это, похоже, проблематично, поскольку артефакты Data Explorer, кажется, не гарантированно доступны во время инициализации плагина — возможно, потому что сам Data Explorer является сторонним плагином и не гарантируется, что он уже загружен? Возможно, я мог бы попробовать использовать SQL через код на Ruby, чтобы определить, существует ли таблица?
Миграции: я написал миграции, но они должны безвредно завершаться с ошибкой, но не останавливаться полностью, если плагин Data Explorer не установлен и таблица запросов отсутствует. Миграции должны запускаться при каждой пересборке до тех пор, пока не будет установлен плагин Data Explorer и не станет доступна таблица, чтобы можно было добавить запросы. Таким образом, с точки зрения администратора решение остаётся гибким и не зависит от порядка установки. Сбой миграции не должен ставить под угрозу сборку — существует ли способ завершить миграцию с ошибкой или отложить её, не останавливая сборку?
Использование периодического запланированного задания для проверки наличия как плагина Data Explorer, так и таблицы запросов, а также необходимых запросов.
Попросить администратора добавить их вручную… Фу.
Думаю, следующим шагом я попробую вариант 2 с использованием SQL или, возможно, я что-то упускаю?
Да, именно так. Data Explorer уже подходит к тому моменту, когда его можно использовать для административных задач теми, кто имеет повышенные права в процессе.
Можно настроить задачу, которая проверяет их установку. Она не начнёт выполняться, пока всё не запустится.
Но чтобы убедиться, что ничего не сломано, можно проверить, доступен ли какой-то вызов обозревателя данных. Кажется, я делаю именно так для подписок, возможно. (Утро, я ещё не открыл ноутбук.)
На прошлой неделе добавили код, который проверяет, загружен ли плагин чата.
Может, просто поставить его в очередь на однократный запуск при старте? Тогда он будет работать, пока тест плагина не пройдет успешно, или завершится через несколько минут?
Мне нравится идея с добавлением в очередь при инициализации. Это потенциально решает проблему загрузки. Я предпочитаю это варианту «раз в 24 часа». Попробую! Спасибо!
Я думаю, достаточно просто разместить ваш тест в месте, где он будет перехвачен при сбое. Но разве нельзя просто проверить, существует ли что-то вроде DataExplorer.something?
Я недостаточно хорошо разбираюсь в миграциях, чтобы подумать об их использовании для вашего случая. Также можно создать endpoint, который, скажем, вызывался бы из админ-панели и проверял, установлены ли у вас нужные запросы.
Теперь, когда я об этом думаю, боюсь, что единственная проблема, которую я на самом деле решил, — это добавление другого плагина, чтобы тесты могли работать.