Emberアドオンが誤ったピア依存関係として解決されている。 -- "content-tag@3.1.0": "patches/content-tag@3.1.0.patch"を削除することで修正されました。

開発インスタンスを維持するために週に2〜4時間費やしていると誓います。

pnpm dedupe を実行します。

pfaffman@noreno:~/src/discourse-repos/discourse$ bin/ember-cli
Scope: all 17 workspace projects
Lockfile is up to date, resolution step is skipped
Already up to date
Done in 1.3s
Some V1 ember addons are resolving as incorrect peer dependencies. This makes it impossible for us to safely convert them to v2 format.

  👇 👇 👇
👉 See https://github.com/embroider-build/embroider/blob/main/docs/peer-dependency-resolution-issues.md for an explanation of the problem and suggestions for fixing it.
  👆 👆 👆

discourse@0.0.0 (dev)-> discourse-plugins@1.0.0 -> ember-this-fallback@0.4.0
  sees peerDep ember-source@5.12.0
    at /home/pfaffman/src/discourse-repos/discourse/node_modules/.pnpm/ember-source@5.12.0_patch_hash=xx7mvsb7nmshqkkqhmf45r3hse_@glimmer+component@1.1.2_@babel+cor_fw7srrjre4qclkyiv6wvjvr6va/node_modules/ember-source
  but discourse@0.0.0 is using ember-source@5.12.0
    at /home/pfaffman/src/discourse-repos/discourse/node_modules/.pnpm/ember-source@5.12.0_patch_hash=xx7mvsb7nmshqkkqhmf45r3hse_@glimmer+component@1.1.2_@babel+cor_stof4qukza26ryuxyhy7me4cya/node_modules/ember-source

その後、プラグインを削除して再度試したところ、このエラーが発生しました。

pnpm install -r
Scope: all 17 workspace projects
 ERR_PNPM_PATCH_NOT_APPLIED  The following patches were not applied: content-tag@3.1.0

Either remove them from "patchedDependencies" or update them to match packages in your dependencies.
Progress: resolved 1786, reused 1734, downloaded 0, added 0

ember を機能させるために、この行を削除しました。

新しい Discourse バージョンをプルするときに実行することは次のとおりです。

  cd "$DISCOURSE_SRC"
  # NOTE: if bundler is broken, try `gem install bundler -v 2.5.3`

  # Fine. We'll be in charge of at least creating a database
  if psql -d discourse_development -c '\q' 2>/dev/null; then
    # connection successful
    echo "WE have postgres."
  else
    echo "No have discourse database"
    cd /tmp && sudo su -c "su postgres -c 'createuser -s \"$USER\"'"
    cd $DISCOURSE_SRC
    LOAD_PLUGINS=1 ./bin/rails db:create
    LOAD_PLUGINS=1 RAILS_ENV=test ./bin/rails db:create
    echo "CREATE EXTENSION IF NOT EXISTS vector;" | psql
  fi

  if ! [[ -d $ALL_THE_PLUGINS ]]; then
    echo "MISSING THE PLUGINS"
    cd $SRC
    git clone https://github.com/discourse/all-the-plugins
    cd $ALL_THE_PLUGINS
    ./reset-all-repos
  fi
  cd $ALL_THE_PLUGINS
  if [ -z "$(find official -mmin -100)" ]; then
    echo -e "\nUpdating the plugins\n "
    ./reset-all-repos
  fi

  if ! [[ -d $ALL_THE_THEMES ]]; then
    echo "MISSING THE THEMES!!!"
    sleep 5
    cd $SRC
    git clone https://github.com/discourse/all-the-themes
    cd $ALL_THE_THEMES
    ./reset-all-repos
  fi

  cd $ALL_THE_THEMES
  if [ -z "$(find official -mmin -100)" ]; then
    echo -e "\nUpdating themes. . . \n"
    ./reset-all-repos
  fi

  asdf plugin add ruby 2>&1 |grep -v "already"
  asdf plugin add imagemagick 2>&1 |grep -v "already"
  asdf plugin update --all > /dev/null

  docker pull discourse/base:release
  RUBY_VERSION=$(docker run discourse/base:release bash -c 'ruby --version'|cut -d' ' -f2)
  LOCAL_RUBY_VERSION=$(ruby --version|cut -d' ' -f2)
  echo "Got RUBY_VERSION $RUBY_VERSION"
  asdf install ruby $RUBY_VERSION 2>&1 |grep -v "already"
  asdf global ruby $RUBY_VERSION 2>&1 |grep -v "already"
  IMAGE_MAGICK_VERSION=$(docker run discourse/base:release bash -c 'convert --version'|head -1|cut -d' ' -f3)
  echo "Got IMAGE_MAGICK_VERSION: $IMAGE_MAGICK_VERSION"
  asdf install imagemagick $IMAGE_MAGICK_VERSION 2>&1 |grep -v "already"
  asdf global imagemagick $IMAGE_MAGICK_VERSION 2>&1 |grep -v "already"

  # 2025-01-13 get node version from the base container!
  NODE_VERSION=$(docker run discourse/base:release bash -c 'node --version'|cut -d'v' -f2)
  echo "GOT NODEJS version: $NODE_VERSION"
  asdf install nodejs $NODE_VERSION 2>&1|grep -v "already"
  asdf global nodejs $NODE_VERSION 2>&1|grep -v "already"

  npm install -g pnpm

  # end of version updates
  cd $DISCOURSE_SRC
  git checkout main
  git pull
  bundle install
  rm -rf node_modules pnpm-lock.yaml
  pnpm install -r --fix-lockfile

  echo -e "\n-----------> Running pnpm update. . .\n"
  pnpm update
  echo -e "\n-----------> Running pnpm dedupe. . .\n"
  pnpm dedupe
  echo -e "\n-----------> Migrating the databases. . .\n"
  LOAD_PLUGINS=1 ./bin/rails db:migrate
  LOAD_PLUGINS=1 RAILS_ENV=test ./bin/rails db:migrate
  exit
「いいね!」 2

なぜですか?それはロックファイルを変更します。これは実際には変更したくないものです(意図的に Discourse の依存関係を変更しようとしている場合を除きます)。依存関係を変更したくない場合、必要な pnpm コマンドは pnpm install だけです。

説明された問題は、pnpm ロックファイルがコアのものと分岐している場合に発生する可能性があります。差分がないか確認することをお勧めします(例:git status または使用している git GUI 経由)。差分がある場合は、リセットしてください(例:git restore pnpm-lock.yaml 経由)。

関連する可能性:インストールスクリプトから --fix-lockfile を削除することをお勧めします。コアのロックファイルは「修正」する必要はありません。そのため、ローカルでこれを実行すると、分岐が発生する可能性しかありません。

ところで、devcontainer セットアップ を試しましたか?これは、このようなメンテナンスをほぼ完全に排除することを目指しています。

ただし、もしこの問題が pnpm ロックファイルを変更したことによるものである場合、devcontainer でも発生する可能性があります :sweat_smile:

「いいね!」 1

ああ、そうですね…それが解決策になりますね :eyes:

コアのロックファイルを使いましょう。それを削除して package.json から再生成すると、すべての依存関係の最新バージョンが取得され、間違いなく問題が発生します。

ちなみに、pnpmnode_modules を整理するのが非常に得意なので、コアをプルするたびに削除する必要はありません。コアをプルするときに私がするのは、bundle install && pnpm install && bin/rake db:migrate だけです。

それは私が抱えていた最後の問題を解決したので?

今日追加しようとした別のものです。それを削除します。

意図的に変更したわけではありません…愚か者は非常に巧妙なので、すべてを間違いのないものにするのは難しいです。

おそらく git clean -f が必要だったのでしょう。 :person_shrugging:

何年も使っていません。以前は遅いと思っていたような気がします。今はそれほどでもないのでしょうか?もう一度試すべきでしょうか?あなたはそれを使っていますか?

これはかなり新しいガイドで、古い「docker dev」ガイドとは異なります。(実際…それは…古いガイドを非推奨/削除すべきであることを思い出させます)

macOSでは、仮想化のオーバーヘッドにより、特にRSpecスイートを並列で実行するようなCPU負荷の高いタスクでは、少し遅くなります。しかし、一般的な開発では非常に優れています。

100%の時間使用しているわけではありませんが、メインの開発環境に触れたくない場合に、自己完結型の小さなタスクには使用しています。たとえば、レビュー中に他の人のPRをチェックアウトする場合などです。または、stableブランチでテスト/開発を行う必要がある場合などです。

いいですね!それが機能するかどうかお知らせください :crossed_fingers:

ああ!マニュアルを読む必要があるかもしれません。過去5年間で何かが変わったのかもしれません。次にイライラしたときは、それを確認してみます。ありがとう。

git clean -f で修正されたようです。どこかに Discourse のフォークがあり、そこを編集して PR を作成できるかもしれませんが、このコピーは元のソースからのものなので、変更を破棄しても問題ありません(おそらく、変更はすべて事故だったでしょう)。

主にプラグイン開発のために開発環境を使用しています。

これで再び動作するようになり、スクリプトが少なくとも今後数回は機能することを慎重に期待しています!

「いいね!」 2

今日は、Discourse が pnpm 9.15.5 を要求し、npm が 10 をインストールしようとしたため、開発環境を実行できませんでした。「pnpm --version」はホームディレクトリで 10.x を示しましたが、Discourse ディレクトリでは実行を拒否しました。午後中ずっとかかりました。最終的に npm で pnpm をアンインストールし、代わりにアップデート スクリプトにこれを追加しました。

  PNPM_VERSION=$(docker run discourse/base:release bash -c 'pnpm --version'|cut -d'v' -f2)
  echo "GOT PNPM version: $PNPM_VERSION"
  asdf install pnpm $PNPM_VERSION 2>&1|grep -v "already"
  asdf global pnpm $PNPM_VERSION 2>&1|grep -v "already"

これで機能するようです。

Docker の開発マジックを使おうとしましたが、ENV を渡す方法がわからず、DISCOURSE_DEV_ALLOW_ANON_TO_IMPERSONATE も設定されていなかったため、ログインできませんでした。

そして、またこれが出ています。

 Error encountered while starting Sidekiq: [Discourse::Utils::CommandError] /home/pfaffman/src/discourse-r
epos/discourse/lib/discourse.rb:139:in `exec': renice: failed to set priority for 116553 (process ID): Permission denied

以前、何かを編集して修正したと思います。

さて、nice の問題を修正する方法は次のとおりです。私だけがこの問題に直面しているとは思いません。

次のようなファイルで

sudo nano /etc/security/limits.d/90-pfaffman-nice.conf

次のようなものを追加します。

pfaffman soft priority 5
pfaffman hard priority 5
「いいね!」 1

coreにこのコミットがある限り、理論上はpnpm 10.xを実行するとcore内で自動的にpnpm 9にダウングレードされるはずです。特別なインストール方法は必要ありません。

pnpm 10リリース直後、一部のチームメンバーが問題に遭遇し、pnpm self-update 9を実行することで解決できましたが、coreにこの新しい設定を追加してからは、手動で何かを行う必要があった人はいないと思います。

VSCodeを使用していますか?定義済みのタスクを使用している場合は、tasks.jsonにenvを追加できます。VSCodeターミナルからrails/emberを起動している場合は、他のターミナルと同様にプレフィックスとしてenvを追加できます。

それは私にとっても初めてのエラーです :sweat_smile:。解決できたようでよかったです!

ちなみに、お使いのLinux OSは何ですか?

d2a34bed8439557bfc37b8c08f89271be6903015(それ以降のはずです)を使用していますが、pnpm 9を実行しようとしましたが、どこにも見つからなかったため、独自のバージョンを強く求めていたため実行を拒否されました。そして、asdfに任せるまで、私ができることは何もインストールできませんでした。

なんと。まさか。いいえ。「development docker」で検索したところ、古い方法を見つけたようです: https://meta.discourse.org/t/install-discourse-for-development-using-docker/102009。もしそれが現在の推奨方法であれば、誰かがこれを Developing Discourse using a Dev Container にリンクしていただけますか?

POP!OSを使用しています。これは内部的にはほとんど標準のUbuntuだと思っていましたが、renice値を変更したのかもしれません。そして、これは私だけに起こったことかもしれません。いつ始まったのか覚えていませんが、今回はコアを編集するのではなく、OSレベルで修正しました!

「いいね!」 2