DiscourseのアップグレードをEmber 5に向けて準備中

Discourse は、Ember Javascript フレームワークのバージョンを 3 から 5 にアップグレードします。準備作業の大部分は完了しており、多くのサイト (Meta を含む!) はすでに Ember 5 で稼働しています。:ember:

このアップグレードは、現在機能フラグで利用可能です。これは、1 月 10 日からセルフホスト Discourse インストールでデフォルトになります。当初は Ember 3 のサポートはフラグ経由で引き続き利用可能ですが、2024 年の第 1 四半期中に削除されます。

当社のマネージド discourse.org ホスティングでは、今後数ヶ月かけてフラグを段階的にロールアウトします。

:discourse: discourse.org ホスティングティア アップグレード日
Basic 2023-12-07 :white_check_mark:
Free 2023-12-12 :white_check_mark:
Pro 2024-01-15 :white_check_mark:
Business 2024-01-22 :white_check_mark:
Enterprise (個別に検討)

:eyes: 私と私のサイトにとってこれは何を意味しますか?

追加のテーマ、プラグイン、またはテーマコンポーネントなしで Discourse を実行している場合…すべて完了です!指を動かす必要も、まったく心配する必要もありません。

同様に、公式テーマ/プラグインのみを使用している場合、私たちはあなたをカバーしています!すべての公式テーマ、テーマコンポーネント、およびプラグインがアップグレードの準備ができていることを保証します。

サードパーティのカスタマイズを使用している場合は、その開発者がそれらの必要な変更を行っているはずなので、この移行を通じてシームレスに使用を続けることができます。

ただし、自分で作成または委託したカスタムテーマ、テーマコンポーネント、またはプラグインがある場合は、この投稿が対象です!アップグレードに先立って、問題を特定して解決する方法を説明します。

:face_with_monocle: 問題の特定

すべての ember-5 関連のアップグレードの問題は、非推奨の API の使用を確認することで、アップグレードに先立って特定できます。最近の Discourse バージョン (Discourse 3.2.0.beta4-dev 以降) では、これらの重大な非推奨は管理者に警告バナーをトリガーします。

ブラウザの開発者コンソールで、トリガーされた非推奨に関する詳細を確認できます。表示されているすべての非推奨を解決することは、一般的に良い習慣です。しかし、この Ember バージョンのアップグレードでは、解決すべき重要なものは次のとおりです。

非推奨をコンソールに出力する際、Discourse は関連するテーマ/プラグインを特定しようとします。

開発者およびホスティングプロバイダー向けに、非推奨を一括で特定するためのツールをいくつか用意しました。

  • QUnit テストを実行すると、最後に未解決の非推奨のリストが表示されます。GitHub Actions では、この Markdown バージョンがワークフローの概要ページに追加されます。

  • ホスティングプロバイダー向けに、discourse-deprecation-collector プラグインがあり、本番環境で非推奨が発生するたびに Prometheus カウンターをインクリメントします。

:technologist: 非推奨の解決

一般的に、コンソールメッセージには問題の説明と、それを解決するために必要な手順が含まれています。場合によっては、Ember deprecations ウェブサイトや Discourse Meta のような外部リソースへのリンクが含まれます。

不明な点がある場合は、お気軽に以下に投稿するか、専用の Dev トピックに投稿してください。最善を尽くしてお手伝いします。

:rocket: Ember 5 でのテスト

ローカル開発環境で Ember 5 のテストを行うには、EMBER_VERSION 環境変数を使用して ember-cli ヘルパーを開始できます。例:

EMBER_VERSION=5 bin/ember-cli -u

期待どおりに動作していることを確認するには、Discourse がブラウザコンソールに出力する Ember バージョンを確認してください。

本番環境では、app.yml ファイルの env: セクションに EMBER_VERSION: 5 を追加することで、同様のことを実現できます。

「いいね!」 42

チームの皆さん、おめでとうございます。大変な作業だったことでしょう!:sweat_smile:

「いいね!」 11

David、これはこの属性を元に戻して再構築すれば完全に元に戻せるということでしょうか?

「いいね!」 5

はい、完全に元に戻せます👍

「いいね!」 3

皆さん、素晴らしい仕事です。公式にサポートされているテーマ/コンポーネントのリストはどこで見つけられますか?プラグインコンポーネントの3つか4つが公式であることがわかりました。(トピックに「official」タグが付いています)

しかし、4つ目については、このURLしか見つけられませんでした:GitHub - discourse/discourse-full-width-component: Make Discourse occupy the full browser width

これが公式かどうか、アップグレード時に問題が発生しないかどうかをどのように判断できますか?

編集:ここでフィルタリングできるようです:Topics tagged official

その後、リストで特定のテーマを検索します。以前はフォーラムの右上検索を試しました。

トピックリストを検索してもリストにありませんが、GitHubのコントリビューターとしてスタッフが表示されています。

「いいね!」 4

大まかな目安として、URLがgithub.com/discourse/で始まっている場合は、こちらで対応します。discourse-full-width-componentの場合は、特に懸念事項は見当たりません。Ember 5でも問題なく動作するはずです。

「いいね!」 6

管理しているDiscourseホストサイトがEmber 5で稼働しているかどうかを知る方法はありますか?

管理ページを覗いてみましたが、そのような表示は見当たりませんでした。私が管理しているサイトは次のとおりです。

「いいね!」 5

現時点では、Ember 5 は Meta および当社の「ベーシック」ホスティングティアで稼働しています。

最近の Discourse のバージョンでは、現在のバージョン情報をコンソールに出力しています。そのため、開発者ツールコンソールを開いて最初の行を確認できます。

「いいね!」 10

インターネット上のすべてのサイトで開発者ツールにアクセスできます。Chrome の Windows-Linux では F12 キーを押します。Mac では、… のあるメニューにあります。

「いいね!」 8

ありがとうございます。

サイトをオペレーティングシステムのコマンドプロンプトでインストールした場合にアクセスできる Discourse コンソールを意味するのかと思っていました。


手順

  1. インターネットブラウザを開きます(この例ではChrome)。
  2. Discourseサイトに移動します(この例ではhttps://swi-prolog.discourse.group/)。
  3. F12を押します。
  4. 上部にある「コンソール」タブがアクティブでない場合は、「コンソール」タブを選択します。
  5. 最初の行にEmberのバージョンが記載されているはずです。

「いいね!」 4

iPadで何かをしようとしている場合、アプリ経由でコンソール(Safariのみ)が見つかります。

https://apps.apple.com/app/id1064318327

あー、もう利用できないんですね。残念。

「いいね!」 5

この追加機能は素晴らしいです。David と ModernJS チームの皆さん、素晴らしい仕事でした。:rocket:

へえ。Chrome は MacOS でも実行でき、開発者ツールは同じです。難しい、またはほぼ不可能なのは iOS とタッチスクリーンです (つまり、デスクトップモードの iPad には Web インスペクターのようなものがありますが、理想的ではありません)。

「いいね!」 5

F12キーを押すことで?それは機能しないと知っていたと思っていました。

「いいね!」 5

optioncommandJ

「いいね!」 5

F12より覚えにくい理由がわかりません。どちらもほとんど見つけられないと思いますが。そして、私が提案したメニューを見るのも役に立たないかもしれません。

「いいね!」 6

option command J は、あなたにとって覚えやすいはずです :laughing:

「いいね!」 5

私の定番は常に[右クリック] [要素を検証]です。これはすべてのブラウザ/OSで一貫していると思います。

「いいね!」 6

そうですね!

ああ。それは簡単で、いつも機能しますね。いいですね。そして、それがやりたいことであることが多いので、私にとっては数十回のクリックが節約されます。もちろん、この Announcements を乗っ取ってしまったようです。すみません。

「いいね!」 7

開発に時間がかかりそうだとわかっています :grimacing: (新しいサイドバー、カテゴリバッジの削除…カスタムテーマはコストがかかることが多いです!)。

ホストされているBusiness Planを利用していますが、フォーラムをEmber 5にアップグレードしても、本番環境で何も壊れないようにする方法はありますか?

  • 事前の注意喚起と非推奨メッセージをありがとうございます。しかし、非推奨を修正する際に、Ember 3とEmber 5の両方に対応するようにテーマをコードする必要があるのでしょうか?
  • アップグレードするかしないか、選択肢はありますか?それとも、あなただけが決めるのですか?

「プレプロダクション」または「テスト」環境のようなものがあると良いと思います。

「いいね!」 6

こんにちは、ダミアンさん :wave:

Discourse と Ember は、代替手段がすぐに利用可能になった場合にのみ、非推奨のものを非推奨とします。したがって、変更が必要な場合は、すぐに適用でき、Ember 3 で動作します。

これは、Discourse コアおよびすべての公式テーマとプラグインで採用しているアプローチです。Ember 3 / Ember 5 用の個別のコードは作成していません。

残念ながら、オプションではありません。Discourse コアの依存関係を最新の状態に保つことは、セキュリティ、パフォーマンス、および機能の観点から不可欠です。Ember 5 が提供する機能は、Discourse 自体の将来の改善に不可欠になるでしょう。

それは良い質問です!現在、この移行を可能な限りスムーズにするために多くの作業を行っており、さまざまなツールの改善に取り組んでいます。

その改善の 1 つが数時間前にリリースされ、ここで役立つはずです。

フォーラムで /safe-mode にアクセスすると、「JavaScript の非推奨をエラーとして報告する」というチェックボックスが表示されます。

これにより、保留中の非推奨がすべてエラーに変換された状態で、サイトがどのように機能するかを安全に確認できます。

技術的には、「フォーラムで Ember 5 をテストする」とはまったく同じではありません。しかし、完全に別のステージング環境を必要とせずに、今後の破壊的な変更をシミュレートするための良い方法です。

「いいね!」 8