오래된 플러그인에서 데이터베이스 오류를 해결하는 방법?

Discourse 플러그인 개발을 처음 해보는 것인데, 일단 이 퀴즈 플러그인을 최신 버전의 Discourse와 호환되도록 업데이트하려고 시도하고 있습니다.

가능하다면, 플러그인이 활성화된 상태에서 주제를 생성하거나 볼 때마다 발생하는 아래 오류를 어떻게 해결해야 하는지 이해하는 데 도움이 필요합니다:

Message

Job exception: PG::UndefinedTable: ERROR:  relation "quizzes" does not exist
LINE 9:  WHERE a.attrelid = '"quizzes"'::regclass
                            ^



Backtrace

rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:110:in `exec'
rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:110:in `async_exec'
activerecord-7.0.8/lib/active_record/connection_adapters/postgresql/database_statements.rb:19:in `block (2 levels) in query'
activesupport-7.0.8/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
activesupport-7.0.8/lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
activerecord-7.0.8/lib/active_record/connection_adapters/postgresql/database_statements.rb:18:in `block in query'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

관계(relation)가 존재하지 않는 원인이 될 수 있는 일반적인 문제들이 있을까요? 그런 문제들은 보통 /db 디렉터리에서 발견되는 것일까요?

참고로 관련이 있다면, 이 가이드에 설명된 대로 Linux에서 Docker 개발 환경을 사용 중이며, 지금까지 제가 무엇을 했는지는 여기에서 확인할 수 있습니다.

마이그레이션을 실행하지 않은 것 같습니다.

플러그인에서 마이그레이션을 실행하려면 추가적인 환경 변수가 필요합니다. 다음을 참조하세요:

빠른 답변 감사합니다! d/migrate를 발견했는데, 실행한 후 문제가 해결되는 것 같네요. LOAD_PLUGINS=1 RAILS_ENV=test rake db:migrate와 비교하면 어떤 차이가 있나요?

d/migrate는 docker 스크립트 래퍼입니다.

공유한 명령어는 실제로 실행되는 rails 명령어입니다.

대신, 실행 중인 컨테이너에 진입하여 rails 명령어를 실행할 수도 있습니다.

(하지만 네, 테스트 환경을 지정할 필요는 없습니다!)

좋네요! 도움 주셔서 감사합니다.

d/migrate를 열어보니, 공유해 주신 명령어에서 LOAD_PLUGINS=1만 제외하고 나머지는 모두 포함되어 있었습니다. 왜 그걸 빼고도 작동했는지는 잘 모르겠지만, 저한테는 괜찮습니다.

좋은 분이시네요!

커버를 들어올리는 건 항상 좋은 일이죠! 많은 사람들이 소스 코드를 읽지 않는 경우가 많고, 그건 여러분이 생각하는 것보다 훨씬 더 도움이 될 수 있습니다!

네, 그건 흥미로운 구별이네요. 테스트 환경을 위해 이 작업을 할 때만 필요한 건지 궁금하네요 :thinking: