Custom Wizard プラグイン用のカスタム Sprockets ディレクティブを作成しました

カスタムウィザードプラグインは独自の 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 開発者にとって興味深い内容かと思います。

「いいね!」 7

残念ながら、本番環境で動作しなかったため、この変更を元に戻しました。

プラグインが読み込まれるタイミングが、JavaScript ファイルが読み込まれるタイミングよりも少し遅いようです。

動作します。間もなくこの変更を再導入する予定です。

「いいね!」 4

ついに、この機能をコードに追加しました。

「いいね!」 4

念のため、12ヶ月以内に sprockets を ember-cli ベースのビルドに置き換える見込みです。@eviltrout はすでに移行調査を開始しています。

「いいね!」 9

早期にお知らせいただきありがとうございます。その方面へのヒントがあれば大変助かります。cc @angus

「いいね!」 3