EmberCLI:あなたのすぐ近くのDiscourseにも登場!

Discourse のアセットパイプラインを EmberCLI を使用するように移行したいと考えています。EmberCLI は Ember アプリケーションを開発するための標準的な方法ですが、Ember.js のバックグラウンドを持つ方が当プロジェクトに取り組む際、Discourse の従来のアプローチは長らく混乱の原因となってきました。

背景

Discourse は登場して久しく、EmberCLI が存在する以前からあり、当時は Rails のアセットパイプラインのようなものを使用することがベストプラクティスとされていました。長年にわたり、JavaScript モジュール、Babel.js、ソースマップなど、Ember アプリケーションに機能を追加してきましたが、Rails のアセットパイプラインの限界を感じています。async/await のような新しい機能を現在のシステムに統合するのは非常に困難です。

Discourse の次のメジャーバージョン(2.5)では、EmberCLI への移行を計画しています。これは相当な時間を要する作業となるため、フロントエンドアプリケーションの 2 つのバージョンが機能し続けるよう努めます。冒険好きな方は EmberCLI をオプトインして利用でき、他の方は安定性が確保されるまで、これまで通り「現状のまま」アプリケーションを利用し続けることができます。

ロードマップ

  1. 既存のパターンを EmberCLI のパターンへ移行:2.4 ですでに一部着手しています。基本的な目標は、JavaScript コードを Ember-CLI が期待する形式に徐々に移行することです。これには以下が含まれます:

    • すべてのものを同じパスからインポートする
    • 生 Handlebars と Ember Handlebars で異なる拡張子を使用する
    • 計算プロパティの非推奨事項を解消する
    • カスタムモジュールから Ember の Location モジュールへ変更する
  2. EmberCLI 経由での Discourse の起動:(1) で修正されるにつれて新たな問題が発見される可能性が高く、同じアプローチを繰り返すことになります。

  3. テーマコンポーネントとプラグインの統合:既存の拡張機能を可能な限りシームレスに統合するために、調査を行う必要があります。

  4. パフォーマンス(その他)のボトルネックの特定:現在のシステムと同じか、それ以上の速度である必要があります。

  5. 切り替えのタイムライン策定:ユーザーがベータ版を十分にテストし、フィードバックを提供できるよう、十分な猶予を持たせる必要があります。

メリット

移行が完了すれば、現在破綻しているか困難な作業であるソースマップや async/await などが、そのまま動作するようになります。

さらに、Discourse のフロントエンド部分のみを作業したい開発者向けに、EmberCLI を try.discourse.org などのサーバーに接続して、Ruby/Rails サーバーや Redis/Postgres を実行することなくフロントエンドアプリケーションをハックできるように設定できる可能性があります。

これは大規模なプロジェクトですが、最終的にはアプリケーションが大幅に改善されるでしょう!

「いいね!」 38

ロビン、ありがとう!もちろん、この重点事項は私たちにとって非常に重要です。

もしブランチのテストをご希望であれば、お知らせください。

追伸:この移行がどれほど大変な作業になるか想像するだけでも頭が下がる思いです。本当にありがとうございます。

「いいね!」 13

Discourse プラグインを最終的に Rails プラグインとして実装する予定はありますか?それは素晴らしいですね! :smiley: Rails はプラグイン用に最初から多くのジェネレーターを提供しています。また、Discourse は最大のオープンソースの Rails アプリケーションでもありますので、取り組みを統合するのは良いかもしれません。

それは、この作業とは関連しない、異なるはるかに複雑なリクエストです。

「いいね!」 7

いくつかの大規模なテンプレートリンティングの変更をマージし始めます。基本的には「そのまま動作する」はずですが、一部のリグレッションが発生する可能性があります。迅速に対応できるよう努めますので、ユーザーインターフェース要素が更新されないなど、異常な挙動を発見した場合はご報告ください。

「いいね!」 7

本日、app/assets/javascripts/discourse フォルダ内のすべての .js.es6 ファイルを .js にリネームする大規模なコミットをマージしました。これは、Ember CLI の標準的なファイル命名規則に合わせるための一歩です。

次は、.js のトランスパレーションに対するプラグインサポートの実装と、.es6 の非推奨化です。

「いいね!」 13

@eviltrout さん、こんにちは。

これを見つけたのですが、この件に関する進捗はいかがでしょうか? :slight_smile:

「いいね!」 2

非常に結構です。@eviltrout が数日前にこのコミットをマージしました。

これは、この課題に向けた大きなマイルストーンです。

「いいね!」 10

素敵ですね。とても楽しみです。@angus @merefield もきっと気に入ってくれるでしょう。:heart:

「いいね!」 7

はい、現在でも開発モードで Ember CLI を実行できます!もう少し使いやすくなったら、詳しくご紹介します。

「いいね!」 11

楽しみですね :slight_smile:

「いいね!」 4