Discourseのモバイル版の開発

Ubuntu マシンで Discourse のローカル開発環境をセットアップしています。ローカルインストールガイドに従って、メインの開発バージョンを問題なく実行できています。Ember CLI が追加されたので、それも実行し、Rails アプリにプロキシしています。デスクトップ版のアプリとは完全にやり取りできます。

しかし、Chrome の開発者ツールを使用してモバイル版を表示すると、うまくいきません。単に「200 OK」という応答があるだけの空白のページが表示され、コンテンツは全くありません。完全に空白です。

Rails のログを見ると、何かをレンダリングしていることはわかりますが、Ember を介してプロキシされていないようです。

Started GET "/" for <redacted> at 2022-01-31 22:51:03 +0000
   Rendering layout layouts/application.html.erb
   Rendering categories/index.html.erb within layouts/application
   Rendered categories/index.html.erb within layouts/application (Duration: 2.8ms | Allocations: 925)
   Rendered layouts/_head.html.erb (Duration: 1.6ms | Allocations: 273)
   Rendered common/_discourse_stylesheet.html.erb (Duration: 3.2ms | Allocations: 609)
   Rendered layouts/_head_tag.html.erb (Duration: 0.2ms | Allocations: 65)
   Rendered application/_header.html.erb (Duration: 2.5ms | Allocations: 824)
   Rendered layouts/_body_tag.html.erb (Duration: 0.1ms | Allocations: 21)
   Rendered layout layouts/application.html.erb (Duration: 22.6ms | Allocations: 4961)

Ember CLI はリクエストに関する何もログに記録していません。

おそらく何らかの設定を誤っており、どこかでエラーが発生しているのでしょうが、どこでどのようにエラーを表示させるのかを見つけることができません。この問題に関するより詳細なログを取得するために、追加のフラグや環境変数を設定することはできますか?こちらで推奨されている DEBUG=ember-cli:* を設定してみましたが、リクエストに関する何もログに記録されませんでした。

この問題について、何か助けていただけると大変助かります!Discourse の長年のユーザーであり、開発していただきありがとうございます!

「いいね!」 2

ブラウザコンソールにJavaScriptエラーはありますか?

「いいね!」 1

残念ながら、そうではありません。コンソールに表示されるのは、(赤色で) 次のメッセージのみです。

GET http://localhost:4200/ 200 (OK)

応答は、奇妙なことに、完全に空です。

Ember CLI または Discourse 自体の詳細なロギングを有効にする方法について、何かアイデアはありますか?エラーが何であるかがわかれば、おそらく問題を解決できるでしょう。なぜかエラーが全く見えないのです。何かアイデアはありますか?

ソースを詳しく調べたところ、役立つ環境変数が 2 つ見つかりました。

  • PRINT_EXCEPTIONS - すべての例外を表示します。おそらくノイズが多すぎて価値がないかもしれませんが、役立ちました。
  • RAILS_LOGS_STDOUT - すべてをコンソールにログ記録します。これは、上で探していたものです。

これらにより、Rails やテーマの SCSS 内でエラーが発生していないことを確認できました。

どうやら、Ember と Rails の間に gzip コンポーネントが挟まっていたようです。これがどのようにして発生したのかはわかりませんが、Content-Encoding ヘッダーが存在する場合、この特定の行 がそれをコピーしてしまい、ブラウザ (および curl) が応答本文全体を無視する原因となっていました (おそらく、gzip でエンコードされていなかったため)。

これは 2.9.0.beta1 で修正された ようですが、私は 2.7.13 を実行しています。

開発環境で gzip コンポーネントを削除することで、私の特定のバージョンでは問題が解決しましたが、将来的には gzip で問題なく動作するようです。デスクトップ版で同じ問題が発生しなかった理由はわかりません。

同様の問題に直面している他の誰かの役に立つことを願っています。

「いいね!」 3