Discourse 플러그인 CI에서 예상치 못한 오류 발생

업데이트: @NateDhaliwal 님이 after_initializer에서 DB에 접근하는 것이 규칙을 위반할 수 있다는 점을 정당하게 지적해 주셨습니다. 그동안 운이 좋았던 것뿐이었습니다.

일부 변경 사항을 적용할 예정입니다.

다음과 같은 오류가 발생합니다:

ActiveRecord::NoDatabaseError: We could not find your database: discourse_test. Available database configurations can be found in config/database.yml. (ActiveRecord::NoDatabaseError)
detail
rake aborted!
ActiveRecord::NoDatabaseError: We could not find your database: discourse_test. Available database configurations can be found in config/database.yml. (ActiveRecord::NoDatabaseError)
To resolve this error:
- Did you not create the database, or did you delete it? To create the database, run:
    bin/rails db:create
- Has the database name changed? Verify that config/database.yml contains the correct database name.
/__w/discourse-chatbot/discourse-chatbot/config/initializers/000-pg-connection-debug.rb:14:in `rescue in new_client'
/__w/discourse-chatbot/discourse-chatbot/config/initializers/000-pg-connection-debug.rb:4:in `new_client'

GitHub 워크플로우에서 발생합니다.

표준 플러그인 CI 워크플로우에 제가 알지 못했던 변경 사항이 있었나요?

아직도 다음 가이드를 따르고 있습니다:

그리고 v1을 사용하고 있습니다.

이 시점까지는 제 코드가 실행되지 않고 있습니다(게م 설치 제외). 그리고 이 PR에는 어쨌든 사소한 설정 변경 사항만 포함되어 있습니다.

P.S. 최근 진화하고 있는 것 같습니다: https://github.com/discourse/.github/commits/main/.github/workflows/discourse-plugin.yml

100% 확실하지는 않지만, User 같은 객체를 통해 ActiveRecord를 on()이나 잡(job)이 아닌, 단순히 after_initialize에서 직접 사용하는 경우 발생하는 것 같습니다.

저도 얼마 전에 이 문제를 겪었습니다… 기억이 맞다면 AI에게 물어봐야 했어요. 코드를 스케줄 잡으로 옮긴 뒤로는 문제가 해결되었습니다.

죄송합니다, 다시 살펴보니 제 코드에서 실패하는 것 같긴 한데, 저는 after_initialize에서 이를 접근하고 있습니다.

규칙이 변경된 것 같습니다:

user_count = User.count

더 이상 이니셜라이저(initializer)에서 사용이 허용되지 않는 것 같습니다(아마도 처음부터 잘못된 관행이었을 수도 있고요).

제안해 주셔서 감사합니다! :clap:

이것을 잡(job)으로 이동시켜서 한 번만 실행해야 한다는 말씀이 절대적으로 옳다고 생각합니다. :+1:

문제가 없어요, 작동하게 되서 기쁩니다!