개발 환경: 이메일 없이 첫 관리자 계정을 초기화하는 권장 방법은?

discourse/discourse_dev Docker 이미지(Windows 11 노트북)를 사용해 보고 있는데, 개발 워크플로우에서 작은 마찰 지점을 발견했습니다.

아웃바운드 이메일이 구성되지 않은 상태에서 개발 모드로 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가 설정되지 않은 경우 이메일 인증으로 인해 로그인이 차단된다는 것이었습니다.

개발 환경을 단순히 탐색 중인 사용자에게는 헬퍼 태스크에 대해 알지 못하면 로그인 플로우가 깨진 것처럼 보일 수 있습니다.

Docker 개발 컨테이너의 경우 개발 설정 문서bin/rails admin:create를 명시적으로 언급하는 것이 도움이 될 수 있습니다. 신규 기여자들은 SMTP가 설정되어 있지 않은 경우가 많기 때문입니다.

해당 가이드에는 다음 내용이 나와 있으므로 필요하지 않을 것 같습니다.

따라서 관리자 사용자 생성은 이미 워크플로우의 일부인 것 같습니다.

개발 환경에서 이메일 접근이 실제로 필요하다면 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

이것은 개발자 툴바입니다. 안전 모드, 상세 로컬라이제이션, 그리고 예정된 변경 사항을 토글할 수 있습니다. 또한 플러그인 아울렛과 블록을 표시할 수도 있습니다.