うわー、d/cleanup は危険ですね。それは Discourse とは全く関係のない多くの Docker 作業を失う良い方法です…
以下のような手動ハックを試しましたが、権限の問題が次々と発生したため、火消し作業をやめることにしました。
mkdir app/assets/javascripts/plugins
mkdir tmp
sudo chown 1000:1000 tmp
sudo chown 1000:1000 app/assets/javascripts/plugins
ホストユーザー(UID 1000)を使用すれば、うまくいくはずですが、これはDiscourseの開発方法の欠点を露呈しているように思えます。
…そして、その通りうまくいきました。
「tmp」の場合は、名前付きまたは匿名Dockerボリュームに配置できます。プラグインの場合は、マウントされたボリュームがあると便利かもしれませんが、ホストファイルシステムの権限を変更して書き込みをサポートする必要があります。
すべての開発者がUID 1000を使用すると仮定するのは安全ではないと思います。
皆さん、古いバージョンのディスコースで開発を実行する方法を知っていますか?ライブディスコースでは app.yml でバージョンを設定できることは知っていますが、Docker を使用した開発でそれをどのように行うかはわかりません。最新の安定バージョンである v2.7.10 で開発を実行したいです。ご協力ありがとうございます。
そのブランチまたはコミットをGitでチェックアウトしてください。(私がやっている方法はGoogleで検索することです)
データベースをダウングレードした後、データベースを削除、作成、マイグレーションする必要があります。
Hi thanks @pfaffman 、
ディスコースの最新のgit pullを実行し、「stable」バージョンブランチ(ディスコースv2.7.10タグを使用)にチェックアウトしました。
dev initを実行し、管理者ユーザーのメールアドレスとパスワードを設定しました。
d/boot_dev --init
そしてrails serverを実行すると、ポート3000でリッスンします。
d/rails s
次にember-cliを実行します。
cd app/assets/javascripts/discourse
yarn
yarn run ember serve --proxy "http://localhost:3000"
ディスコースの開発は「http://localhost:4200」で開くことができます。
しかし、管理者ユーザー(「d/boot_dev --init」実行時に作成したユーザー)としてログインすると問題が発生します。
画面に「不明なエラー」というポップアップが表示され、/logsには以下のエラーが表示されます。
ActiveRecord::StatementInvalid (PG::UndefinedFunction: ERROR: function max(boolean) does not exist
LINE 1: ..._rank, MAX(user_badges.created_at) AS created_at, MAX(user_b...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
)
lib/freedom_patches/ams_include_without_root.rb:49:in `include!'
app/controllers/application_controller.rb:495:in `serialize_data'
app/controllers/application_controller.rb:504:in `render_serialized'
app/controllers/session_controller.rb:611:in `login'
app/controllers/session_controller.rb:337:in `create'
app/controllers/application_controller.rb:395:in `block in with_resolved_locale'
app/controllers/application_controller.rb:395:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/missing_avatars.rb:23:in `call'
lib/middleware/turbo_dev.rb:34:in `call'
このエラーについて何か経験がありますか?それとも、以前のバージョンで開発を実行する手順が間違っていたのでしょうか?
データベースを rm -r する必要があると思います。どこにあるかはわかりませんが、おそらく OP にあるでしょう。
皆さん、こんにちは。
再びクリーンな状態から始めました。すべて順調に進み、ログインできるまっさらな開発環境が整いました。
次に、本番環境に合わせるためにいくつかのプラグインを導入し、最新のバックアップを取得します。
それをアップロードし、開発環境に復元しようとすると、再び「Peer authentication error」が発生します。バグを報告しましたが、今のところ返信はありません。どなたか再現を試していただけますか?この投稿のコメント欄で同様の問題を見かけたので、私だけではないと思います。
[2021-11-29 19:43:39] 'koen' has started the restore!
[2021-11-29 19:43:39] Marking restore as running...
[2021-11-29 19:43:39] Making sure /src/tmp/restores/default/2021-11-29-194339 exists...
[2021-11-29 19:43:39] Copying archive to tmp directory...
[2021-11-29 19:43:39] Extracting dump file...
[2021-11-29 19:43:40] Validating metadata...
[2021-11-29 19:43:40] Current version: 20211124161346
[2021-11-29 19:43:40] Restored version: 20211123033311
[2021-11-29 19:43:40] Enabling readonly mode...
[2021-11-29 19:43:40] Pausing sidekiq...
[2021-11-29 19:43:40] Waiting up to 60 seconds for Sidekiq to finish running jobs...
[2021-11-29 19:43:46] Creating missing functions in the discourse_functions schema...
[2021-11-29 19:43:46] Restoring dump file... (this may take a while)
[2021-11-29 19:43:47] psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL: Peer authentication failed for user \"postgres\"
[2021-11-29 19:43:47] EXCEPTION: psql failed: psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL: Peer authentication failed for user \"postgres\"
[2021-11-29 19:43:47] /src/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/src/lib/backup_restore/database_restorer.rb:26:in `restore'
/src/lib/backup_restore/restorer.rb:51:in `run'
/src/script/spawn_backup_restore.rb:23:in `restore'
/src/script/spawn_backup_restore.rb:36:in `block in <main>'
/src/script/spawn_backup_restore.rb:4:in `fork'
/src/script/spawn_backup_restore.rb:4:in `<main>'
[2021-11-29 19:43:47] Trying to rollback...
[2021-11-29 19:43:47] There was no need to rollback
[2021-11-29 19:43:47] Cleaning stuff up...
[2021-11-29 19:43:47] Dropping functions from the discourse_functions schema...
[2021-11-29 19:43:47] Removing tmp '/src/tmp/restores/default/2021-11-29-194339' directory...
[2021-11-29 19:43:47] Unpausing sidekiq...
[2021-11-29 19:43:47] Marking restore as finished...
[2021-11-29 19:43:47] Notifying 'koen' of the end of the restore...
[2021-11-29 19:43:51] Finished!
こんにちは。
ポート3000と4200の間の分裂から生じていると思われる問題が発生しています。それらがどのように関連しているのか完全にはわかりませんが、私の理解では、3000がサーバーで、4200がEmber CLIからのサーバーへのプロキシです。ポート4200は正常に機能しますが、時折、特に302で応答する場合、レスポンスヘッダーのURIが4200ではなく3000を使用します。具体的には、こちらで説明されているように、カスタムプロバイダーでOAuth2を機能させようとしていましたが、一部のレスポンスにポート3000が存在すると、OAuth2ワークフローが壊れます。私のOAuth2構成にはポート3000は一切含まれておらず、サーバー内部から来ているはずです。
このような問題に遭遇したことがある方はいらっしゃいますか?本番リリースにより近い環境をセットアップする方法をご存知ですか?
参考までに、本番リリースをローカルでセットアップしようとしましたが、本格的なドメインとメール登録が必要で、ローカル環境にはあまり適していないようです。
よろしくお願いします。
Update、クリーンな状態からやり直そうと別のマシンで試しましたが、このスレッドの途中、@dcookさんの投稿100で言及されているUID 1000を持っておらず、そこで行き詰まりました。UID=1000を前提とするのは間違っており、バグを構成すると同意します。そのように報告しましたか?
私のメインマシンでは、Postgressユーザーの権限バグが続いており、ここで報告しました:https://meta.discourse.org/t/backup-restore-failing-on-clean-dev-docker-env-fatal-peer-authentication-failed-for-user-postgres/208170。
@rishabh、これらの両方の項目についてどう思いますか?Dockerベースの方法に切り替えたのは、迅速かつクリーンで気に入っていました。しかし、今では2台のマシンで袋小路のように感じており、解決のために他に何ができるか疑問に思っています。また、バグのライフサイクルについても少し疑問に思っています。受信、レビュー、却下、または承認、保留、解決など、どのように扱われるのでしょうか?
とりあえず、ネイティブ開発環境をセットアップして、それが機能するかどうかを確認してみます。
こんにちは。Dockerを使ってMacにDiscourseをインストールするのは初めてです。
まず、私の英語がおかしいことをお詫びします。![]()
すでに以下を実行しました。
d/boot_dev --init
その後、ポート3000が既に使用されているというエラーが発生しました。そのため、ポートを30030:3000に変更しました(ファイル: bin/docker/boot_dev)。
その後、このコードを開始しました。
d/boot_dev --init
# 1つのターミナルで:
d/rails s
# そして別のターミナルで
d/ember-cli
私の質問は以下の通りです。
-
d/rails sコードを実行しているとき、「localhost:30030」でDiscourseの開始ページを開くことができます。Discourseを開いて30030ポート(ポートフォワーディング)を使用するだけで、インストールプロセスを完了できますか?d/rails sやd/ember-cliが何なのか分かりません…。 -
d/rail sのプロセスが非常に長いです。何かが間違っているのではないかと心配しています。これは正しいですか?それとも、d/rails sとd/ember-cliはDiscourseをホストしている間のバックグラウンドプロセスですか?
ありがとうございます。![]()
こんにちは。
開発環境で、app.yml に配置すべき設定を編集することは可能でしょうか?
主な質問は DISCOURSE_ENABLE_CORS の編集についてです。管理インターフェースに CORS のオリジンを追加するだけでは、CORS エラーを解決できませんでした。
よろしくお願いします。
/config ディレクトリの下に discourse.conf ファイルを作成することで、問題が解決したようです。
enable_cors = true
デフォルトのコンフィグファイルから取得した情報: discourse/config/discourse_defaults.conf at main · discourse/discourse · GitHub
皆さん、Docker を使用して Discourse の開発環境を初期化する際に問題が発生しました。
私の本番環境の Discourse は v2.8.0 タグバージョンを使用しているため、ローカル開発も v2.8.0 を使用する必要があります。
開発環境のセットアップには Mac OS 上で実行されている Docker を使用しています。
コマンドで実行したことは次のとおりです。
git clone https://github.com/discourse/discourse.git
cd discourse
git checkout v2.8.0
d/boot_dev --init
データベースの移行セクションで init コードが到達した後、このエラーが発生しました。
データベースを移行中...
== 20220104053343 AddBookmarkPolymorphicColumns: マイグレーション中 ====================
-- add_column(:bookmarks, :bookmarkable_id, :integer)
rake aborted!
StandardError: エラーが発生しました。このマイグレーションおよびそれ以降のすべてのマイグレーションはキャンセルされました。
PG::DuplicateColumn: ERROR: relation "bookmarks" の列 "bookmarkable_id" は既に存在します
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'
原因:
ActiveRecord::StatementInvalid: PG::DuplicateColumn: ERROR: relation "bookmarks" の列 "bookmarkable_id" は既に存在します
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'
2ヶ月前にはバージョン 2.8.0 で開発環境を実行しても問題ありませんでしたが、数日前からこの問題が発生し始めました。
皆さんも同じような問題を抱えていますか?
Discourse の新しいバージョンでデータベースを移行した場合、古い移行を取得するにはデータベースを削除して新しく作成する必要があります。
新しいクローンをクリーンインストールし、バージョン2.8.0で開発を初期化しました。まだデータはないはずです。
インストール中にミスをしてしまいました。すべてアンインストールしてから、最初からやり直す方法はありますか?
こんにちは。この奇妙なエラーを見つけました。この問題を解決した経験のある方はいらっしゃいますか?よろしくお願いします!
d/boot_dev --init を実行したときに表示されます。
データベースを移行中...
rake aborted!
LoadError: cannot load such file -- /usr/local/lib/ruby/gems/2.7.0/gems/mail-2.8.0.rc1/lib/mail/indifferent_hash.rb
/src/lib/email.rb:3:in `<main>'
/src/app/jobs/scheduled/poll_mailbox.rb:10:in `<class:PollMailbox>'
/src/app/jobs/scheduled/poll_mailbox.rb:6:in `<module:Jobs>'
/src/app/jobs/scheduled/poll_mailbox.rb:5:in `<main>'
/src/config/initializers/100-sidekiq.rb:74:in `block (2 levels) in <main>'
/src/config/initializers/100-sidekiq.rb:73:in `glob'
/src/config/initializers/100-sidekiq.rb:73:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(タスクを --trace オプション付きで実行すると、完全なトレースが表示されます)
d/boot_dev --init を実行した際に、同じエラーメッセージが表示されました。d/rake db:migrate RAILS_ENV=development を試しましたが、同じエラーが再度発生しました。
rake aborted!
LoadError: cannot load such file -- /usr/local/lib/ruby/gems/2.7.0/gems/mail-2.8.0.rc1/lib/mail/indifferent_hash.rb
/src/lib/email.rb:3:in `<main>'
/src/app/jobs/scheduled/poll_mailbox.rb:10:in `<class:PollMailbox>'
/src/app/jobs/scheduled/poll_mailbox.rb:6:in `<module:Jobs>'
/src/app/jobs/scheduled/poll_mailbox.rb:5:in `<main>'
/src/config/initializers/100-sidekiq.rb:74:in `block (2 levels) in <main>'
/src/config/initializers/100-sidekiq.rb:73:in `glob'
/src/config/initializers/100-sidekiq.rb:73:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
私もこの問題に遭遇しました。このコミットを元に戻すことで解決しました。
完璧に動作しました。ありがとうございます。