Разработка плагинов без референса

Уже неделю я пытаюсь настроить пользовательский маршрут на своём форуме с помощью плагина. Маршрут должен быть общедоступным для любого пользователя. Я хочу, чтобы плагин просто отображал HTML из шаблона Handlebars по указанному маршруту. Но шаблон не рендерится.

Я изучал, как разрабатывать плагины для Discourse, но не нашёл никакой существенной документации. Каждый раз, когда кто-то задаёт вопрос о разработке плагинов, в ответ приходит ссылка на «руководство» по созданию административного плагина, который показывает фиолетовый щупалец. Каждый раз, когда возникает вопрос о том, почему шаблон не отображается, нас просто направляют к документации Ember по маршрутизаторам.

Это руководство неплохое, но в нём происходит какая-то магия на фоне, которая не объясняется, и поэтому мы не можем взять эту информацию и сразу начать работать. Что, если мы хотим отобразить общедоступный маршрут? Как файл plugin.rb потребляется Discourse? Какие ещё специфичные для Discourse коды или инструкции я могу использовать в файле plugin.rb, например «add_admin_route», чтобы добавлять маршруты в моё приложение? Существует ли определённая структура файлов, которую нужно соблюдать, чтобы маршруты работали корректно?

По сути, где все разработчики, создающие сложные плагины, ищут документацию для этого? Я опытный разработчик, и даже простое добавление общедоступного маршрута на мой форум и отображение шаблона по этому маршруту оказывается сложным при текущем уровне доступных руководств и информации о создании плагинов.

Буду благодарен за любую помощь. Спасибо! :heart:

Майкл, ответ таков: изучайте существующие решения, так как документация быстро устаревает и обычно лишь поверхностно освещает тему. Напротив, популярные плагины часто поддерживаются в актуальном состоянии и охватывают более сложные сценарии использования.

За последние несколько лет я и мои коллеги научились именно этому — использовать существующие репозитории для понимания подходов к решению задач.

Я рекомендую в первую очередь посмотреть репозитории основной команды Discourse (official), затем репозитории Pavilion (pavilion) и мои собственные репозитории в качестве примеров того, как выполнять различные задачи (в указанном порядке! :sweat_smile:).

По мере развития платформы и появления новых версий зависимостей и новых возможностей, официальные плагины, использующие добавленные в платформу новые технологии, могут стать отличной отправной точкой.

Найдите плагин, который функционально решает задачу, похожую на вашу, и скопируйте его подход.

Вот пример плагина, добавляющего один маршрут: