カスタムウィザードプラグインは独自の Ember アプリを作成し、Discourse コアの一部のアセットを利用します。
そのために、個々のファイルをターゲットとする Sprockets ディレクティブを含む wizard-custom.js という JavaScript ファイルを使用しています。
場合によっては、同じフォルダから多数のファイルを読み込む必要があり、長らく require_tree を使用しようと考えましたが、以下の理由によりそれは不可能でした。
wizard-custom.jsファイルはプラグイン内に配置されているため、そのload pathは Discourse と異なり、load path内のファイルのみを読み込むことができます。- Sprockets は
require_treeを使用する際に絶対パスを許可していません。
これを解決できれば、Discourse コアの変更によりプラグインが壊れる頻度も減るはずです。
この課題を緩和するため、Discourse フォルダ内のアセットを絶対パスで検索する require_tree_discourse というカスタム Sprockets ディレクティブを作成しました。そのコードを含む PR は以下の通りです。
Discourse 開発者や、一般的な Rails 開発者にとって興味深い内容かと思います。