開発環境:メールなしで最初のアドミンアカウントをブートストラップする推奨方法?

Windows 11ラップトップ上で discourse/discourse_dev Dockerイメージを試していて、開発ワークフローにおける小さな摩擦点に気づきました。

送信メールを設定せずに開発モードでDiscourseを実行すると、次のようになります。

  1. Ember CLI (localhost:4200) 経由でサインアップ/ログインページにアクセスできます。
  2. ユーザーアカウントを作成できます。
  3. しかし、メール認証が必要なため、ログインがブロックされます。

回避策は、例えばRailsコンソールで手動でアカウントを有効にすることのようです。

u = User.find_by(username: "admin")
u.approved = true
u.email_tokens.update_all(confirmed: true, expired: true)
u.save!

これは機能しますが、次のことが気になりました。

最初の管理アカウントをメールを設定せずにブートストラップするための推奨される開発ワークフローはありますか?

例えば:

  • 開発者は通常、開発環境でもSMTPを設定する必要がありますか?
  • これのためのヘルパータスク(rake admin:createなど)はありますか?
  • 開発コンテナがメール認証なしで最初のユーザーログインを許可するようにするのは理にかなっていますか?

主に、開発コンテナを試している新しい開発者向けに、よりスムーズなセットアッププロセスを文書化するために尋ねています。

はい、あります:

ありがとうございます!それで解決しました。discourse_dev コンテナを試しているときに、bin/rails admin:create に遭遇していませんでした。

最初に混乱したのは、通常の UI サインアップフローはアカウント作成の時点までは機能しますが、SMTP が設定されていない場合、ログインがメール認証によってブロックされることでした。

開発環境を調査している人にとっては、ヘルパータスクについて知らない限り、ログインフローが壊れているように見えてしまいます。

新しいコントリビューターは通常 SMTP を設定していないため、Docker 開発コンテナの開発セットアップドキュメントbin/rails admin:create について明示的に言及すると役立つかもしれません。

そのガイドで本当に必要かどうかわかりません。なぜなら、次のように書かれているからです。

管理者ユーザーの作成はすでにワークフローの一部であるように思われます

開発環境でメールアクセスが必要な場合は、mailhog を実行することもできます。

Discourse ディレクトリで新しいコマンドラインを開き、mailhog を実行するだけです。その後、localhost:8025 にアクセスすると、通常送信されるはずのメールを確認でき、何も設定する必要はありません。

ありがとうございます。その通りですね。

私が混乱した理由は、ドキュメントに記載されている d/boot_dev --init の手順ではすでに管理者ユーザーが作成されるため、その正確な初期化フローを最初から最後まで追うのではなく、開発環境をあれこれ試していたことにあります。

MailHog のアドバイスも役立ちました。開発環境では mailhoglocalhost:8025 を通じて確認メールをローカルでキャプチャできることを知らなかったので、通常のサインアップ/メール確認フローを利用する場合の意図されたワークフローがわかりました。


よりスムーズな理解モデルは以下のようになります:

  1. 標準的な Docker 開発環境では d/boot_dev --init を使用し、プロンプトに従って管理者アカウントを作成します。
  2. メールやサインアップフローをテストする場合は mailhog を実行し、メッセージを localhost:8025 で確認します。
  3. 別途必要な場合は、bin/rails admin:create が管理者アカウントを作成するための手動ヘルパーです。

これで混乱が解消しました。ありがとうございます。


開発 UI を探索している間にもう一つ小さな質問があります。垂直ツールバーにある小さなアイコンボタンは何のために使われるのでしょうか?インターフェース上には表示されていますが、これらが通常のユーザー向けコントロールなのか、管理者用ショートカットなのか、それとも開発/デバッグ用のヘルパーなのか、すぐにはわかりません。

これのことですか?
image

あれは開発者ツールバーです。セーフモード、詳細なローカリゼーション、今後の変更を切り替えることができます。また、プラグインのアウトレットやブロックを表示することもできます。