Плагин Custom Wizard создаёт собственное приложение Ember и использует некоторые ресурсы из ядра Discourse.
Для этого мы используем файл wizard-custom.js с директивами Sprockets, указывающими на отдельные файлы.
В некоторых случаях нам требовалось подключить множество файлов из одной папки, и долгое время мы рассматривали возможность использования require_tree, но, к сожалению, это невозможно по следующим причинам:
- Файл
wizard-custom.jsнаходится внутри плагина, поэтому егоload pathотличается от пути ядра Discourse, и мы можем подключать только файлы, находящиеся внутри этого пути. - Sprockets не поддерживает абсолютные пути при использовании
require_tree.
Решение этой проблемы также означало бы, что плагин будет реже ломаться из-за изменений в ядре Discourse.
Чтобы смягчить эту проблему, мы создали собственную директиву Sprockets под названием require_tree_discourse, которая специально ищет ресурсы внутри папки Discourse, используя абсолютные пути. Вот ссылка на PR с этим кодом:
Думаю, это может быть интересно разработчикам Discourse и разработчикам Rails в целом.